You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:35:15