Win32中Pattern Brush填充大矩形:是平铺还是拉伸位图?
关于Pattern Brush填充矩形的行为疑问
假设存在位图文件smile.bmp,通过以下代码将其加载为100px×100px的HBITMAP:
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"C:/MyImages/smile.bmp", IMAGE_BITMAP, 100 /*Width of Image*/, 100 /*Height of Image*/, LR_LOADFROMFILE); // 加载尺寸为100px×100px的位图
接着使用该位图创建Pattern Brush:
HBRUSH hBrush = CreatePatternBrush(hBitmap /*The Bitmap*/);
若调用FillRect使用此画刷填充200px×200px的RECT(代码如下):
RECT rect1 = {0, 0, 200, 200}; FillRect(hdc, &rect1, hBrush); // 会拉伸位图还是直接填充?
请问该操作是会完整填充目标矩形区域,还是会拉伸位图像素以匹配矩形尺寸?
回答
该操作会完整填充目标200px×200px的矩形区域,但不会拉伸位图像素。
用CreatePatternBrush创建的画刷,会以加载好的100px×100px位图作为重复图案,在目标矩形内平铺这个位图——横向和纵向各重复2次,刚好填满整个200px×200px的区域,位图本身的像素尺寸不会被拉伸改变。
内容的提问来源于stack exchange,提问作者Amrit Sanjeev
相关产品推荐
相关产品推荐

