转 使用FillRect配合CreatePatternBrush,用位图填充一个矩形 canvas fillrect

在一个Dialog取得一个WindowDC,利用这个DC,在Dialog的一个和位图“一样高”矩形区域贴图片,如果这个矩形的相对窗口的坐标为(0,0,100,100),贴图一切正常,但是如果y坐标不从0开始如(0,y1,100,100+y1)or(11,11,111,111),就出先现交错,如果左上角y值是图片高度的整数倍,又是正常的。

我说得交错是指纵向互补贴图:在指定的区域内部,靠近上边看到图片的尾部,然后下面才是图片的大部分。

跟我感觉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);
【转】使用FillRect配合CreatePatternBrush,用位图填充一个矩形 canvas fillrect
DC->FillRect(Self_Rect,&Brush);
DC->SetBrushOrg(OldPoint);

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/261821.html

更多阅读

如何使用在线云播放,无需迅雷会员 迅雷会员在线观看

在线云播放使用教程:好多人都不知道如何免费使用在线云播放,今天我在这里提供一些参考建议,给广大的宅男参考。迅雷官方的云播放速度慢,而且还需要会员,总是让人望而却步,现在终于出了一款免登录,免会员的迅雷云播的方法。下面我就简单的

qq语音转文字是什么?怎么用qq语音文字 qq语音转文字怎么设置

qq语音转文字是什么?怎么用qq语音文字——简介什么是qq语音转文字,qq语音怎么转成文字又怎么用,只要下载最新版本的qq,登录点击发消息就能使用该功能,不过在发消息的时候要注意语速,因为语速快了系统是很难识别出你讲话的意思,发出消息后好

女孩使用的手机推荐/女生用什么手机好 推荐一款女生用的手机

女孩使用的手机推荐/女生用什么手机好——简介在如今智能手机市场爆炸的年代,想要给自己换一款好手机实在不易,收集品种虽然齐全,种类虽然多样,但是一般筒子们看起来大同小异,实在没什么差别。小编自认为对性价比比较高的手机多少有些见

如何计算阻力位,支撑位? 支撑位和阻力位指标

   (2011-03-10 21:51:40)标签: 杂谈分类: 股票技术如何计算阻力位,支撑位?大家都知道黄金分割是0.618和0.382的经典配合,今天我们将采用1.1618和1.0809做一个相关的配合出来。首先,股友们要明确记住我们的计算公式:虽然我们知道了上面的

声明:《转 使用FillRect配合CreatePatternBrush,用位图填充一个矩形 canvas fillrect》为网友傲气稳了全场分享!如侵犯到您的合法权益请联系我们删除