我说得交错是指纵向互补贴图:在指定的区域内部,靠近上边看到图片的尾部,然后下面才是图片的大部分。
跟我感觉FillRect用位图画刷贴图好像默认就是从DC内定的左上角(0,0)开始,我们在指定的区域贴图就像一个矩形的视口一样,如果看的位置不对,看到的部分就包含上面图片的下部和下面图片的上部。
有个设置Brush原点的函数叫S etBrushOrg, 在画图时先改变原点,代码如下:
CBitmap m_Bmp;
HBITMAP hBitmap;
hBitmap=(HBITMAP)LoadImage(NULL,BitmapPathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_Bmp.Attach(hBitmap);
BITMAP bmstru;
m_Bmp.GetBitmap(&bmstru);
int Self_x,Self_y,Self_cx,Self_cy;
(x!=NULL)?Self_x=x:Self_x=Rect.left;
(y!=NULL)?Self_y=y:Self_y=Rect.top;
(cx!=NULL)?Self_cx=cx:Self_cx=bmstru.bmWidth;
(cy!=NULL)?Self_cy=cy:Self_cy=bmstru.bmHeight;
CRect Self_Rect;
Self_Rect.left=Self_x;
Self_Rect.top=Self_y;
Self_Rect.right=Self_x+Self_cx;
Self_Rect.bottom=200;
CBrush Brush;
CPoint OldPoint;
OldPoint=DC->GetBrushOrg();
DC->SetBrushOrg(Self_x,Self_y);
Brush.CreatePatternBrush(&m_Bmp);
DC->FillRect(Self_Rect,&Brush);
DC->SetBrushOrg(OldPoint);