MFC-画刷
在GDI中,用HBRUSH来表示画刷。H是代表句柄的意思。
在GDI中,填充矩形,填充圆,填充饼等以及刷窗口背景都是通过画刷来操作的。
GDI默认的画刷是白色的画刷
WIN32
单色的画刷
HDC hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, 0, 0, NULL); HPEN hpen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); SelectObject(hdc, hpen); HBRUSH hbr; hbr = CreateSolidBrush(RGB(255, 0, 0)); //单色的画刷 SelectObject(hdc, hbr); Rectangle(hdc, 0, 0, 200, 200); DeleteObject(hpen); DeleteObject(hbr);//删除画刷 ::ReleaseDC(m_hWnd, hdc);
特定颜色的画刷
HDC hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, 0, 0, NULL); HPEN hpen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); SelectObject(hdc, hpen); HBRUSH hbr; hbr = (HBRUSH)GetStockObject(BLACK_BRUSH); //只能取特定颜色的画刷,如BLACK_BRUSH,GRAY_BRUSH等刷 /* GDI预定义了以下库存画刷: BLACK_BRUSH 黑色画刷 DKGRAY_BRUSH 暗灰色画刷 GRAY_BRUSH 灰色画刷 LTGRAY_BRUSH 浅灰色画刷 WHITE_BRUSH 白色画刷 NULL_BRUSH 空画刷 DC_BRUSH DC画刷 HOLLOW_BRUSH 空心刷(相当于NULL_BRUSH) */ SelectObject(hdc, hbr); Rectangle(hdc, 0, 0, 200, 200); DeleteObject(hpen); DeleteObject(hbr);//删除画刷 ::ReleaseDC(m_hWnd, hdc);
位图画刷
HDC hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, 0, 0, NULL); HPEN hpen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); SelectObject(hdc, hpen); HBRUSH hbr; HBITMAP hBmp = NULL; CString str = _T("D:\\1.bmp"); hBmp = (HBITMAP)::LoadImage(NULL, str, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); hbr = CreatePatternBrush(hBmp); //创建位图画刷 /* 参数:HBITMAP hbm 逻辑画笔的位图的句柄 返回值:如果函数成功,则返回值标识逻辑画笔。 如果函数失败,则返回值为 NULL */ SelectObject(hdc, hbr); CRect rect= CRect(10, 10, 110, 210); FillRect(hdc, &rect, hbr); DeleteObject(hpen); DeleteObject(hbr);//删除画刷 ::ReleaseDC(m_hWnd, hdc);
带阴影的画刷
HDC hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, 0, 0, NULL); HPEN hpen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); SelectObject(hdc, hpen); HBRUSH hbr; hbr = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0, 255)); //创建一个具有指定阴影模式和颜色的逻辑刷子 /* 参数1:int fnStyle 画笔的阴影样式。 此参数的取值可为下列值之一: HS_BDIAGONAL:表示45度向上,从左至右的阴影(/////) HS_CROSS:水平和垂直交叉阴影(+++++); HS_DIAGCROSS:45度交叉阴影(XXXXX); HS_FDIAGONAL:45度向下,从左至右阴影(\\\\\\); HS_HORIZONTAL:水平阴影(-----); HS_VERTICAL:垂直阴影(|||||) 参数2:COLORREF clrref 指定用于阴影的刷子的前景色,请使用 RGB 宏 返回值:如果函数成功,则返回值标识逻辑画笔。 如果函数失败,则返回值为 NULL */ SelectObject(hdc, hbr); CRect rect = CRect(10, 10, 110, 210); FillRect(hdc, &rect, hbr); DeleteObject(hpen); DeleteObject(hbr);//删除画刷 ::ReleaseDC(m_hWnd, hdc);
LOGBRUSH结构体
HDC hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, 0, 0, NULL); HPEN hpen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); SelectObject(hdc, hpen); HBRUSH hbr; LOGBRUSH rush = { BS_SOLID,RGB(0,0,255) };//定义画刷的样式、颜色和图案 /* 参数1:UINT lbStyle 画笔样式。 lbStyle 成员必须是以下样式之一 BS_DIBPATTERN 由独立于设备的位图定义的模式画笔 (DIB) 规范 BS_DIBPATTERN8X8 请参阅BS_DIBPATTERN。 BS_DIBPATTERNPT 由独立于设备的位图定义的模式画笔 (DIB) 规范 BS_HATCHED 阴影画笔 BS_HOLLOW 空心画笔 BS_NULL 与BS_HOLLOW相同 BS_PATTERN 内存位图定义的图案画笔 BS_PATTERN8X8 请参阅BS_PATTERN BS_SOLID 纯色画笔 参数2:COLORREF lbColor 画刷的颜色 如果 lbStyle 是BS_HOLLOW或BS_PATTERN样式,则 忽略 lbColor 如果 lbStyle 是BS_DIBPATTERN还是BS_DIBPATTERNPT,lbColor 成员必须是下列值之一 DIB_PAL_COLORS 颜色表由 16 位索引组成的数组组成到当前实现的逻辑调色板中 DIB_RGB_COLORS 颜色表包含文字 RGB 值 参数3:ULONG_PTR lbHatch 阴影样式 如果 lbStyle BS_DIBPATTERN, lbHatch 成员包含打包的 DIB 的句柄 如果 lbStyle BS_DIBPATTERNPT, lbHatch 成员包含指向打包的 DIB 的指针 如果 lbStyle BS_HATCHED, lbHatch 成员指定用于创建阴影的线条的方向。 可以是下列值之一 HS_BDIAGONAL 向上 45 度、从左到右的阴影 HS_CROSS 水平和垂直交叉阴影 HS_DIAGCROSS 45 度交叉线 HS_FDIAGONAL 45 度向下、从左到右的阴影 HS_HORIZONTAL 水平阴影 HS_VERTICAL 垂直阴影 如果 lbStyle BS_PATTERN, lbHatch 是定义模式的位图的句柄。 位图不能是 由 CreateDIBSection 函数创建的 DIB 节位图 如果 lbStyle BS_SOLID 或 BS_HOLLOW,则 lbHatch 将被忽略 */ hbr = CreateBrushIndirect(&rush);//创建具有指定样式、颜色和图案的逻辑画刷 /* 参数:指向 LOGBRUSH 结构的指针,其中包含有关画刷的信息 返回值:如果函数成功,则返回值将标识逻辑画刷 如果函数失败,则返回值为 NULL 如果不再需要画刷,请调用 DeleteObject 函数将其删除 */ SelectObject(hdc, hbr); CRect rect = CRect(10, 10, 110, 210); FillRect(hdc, &rect, hbr); DeleteObject(hpen); DeleteObject(hbr);//删除画刷 ::ReleaseDC(m_hWnd, hdc);
系统颜色画刷
看:https://www.cnblogs.com/liming19680104/p/17323502.html
MFC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2022-04-09 浩辰CAD-图层管理
2019-04-09 第十章第一节 浮力