使用图案画笔绘制控件皮肤






4.18/5 (5投票s)
2001年6月22日

100914

1118
你可以通过在 OnCtlColor()
方法中返回一个画笔来实现控件的皮肤。
引言
本文展示了如何使用图案画笔为你的控件提供类似的外观和感觉。
当使用画笔时,你可以指定画笔的起始点。因此,如果你的所有控件都使用相同的画笔,那么你的控件将具有相同的特征。如果你处理 OnCtlColor()
并返回一个图案画笔,那么你就可以做到这一点。这是一种非常简单的方法。
我在我的源代码中使用类似以下函数的代码
UnrealizeObject()
:UnrealizeObject
函数重置画笔的起始点或重置逻辑调色板。CDC::SetBrushOrg()
:此方法指定 GDI 为设备上下文选择的下一个画笔分配的起始点。
主函数
HBRUSH CPatternDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); CPoint pt(0,0); if (this != pWnd) { CRect rc; pWnd->GetWindowRect(&rc); ScreenToClient(&rc); pt.x = -(rc.left + GetSystemMetrics(SM_CXDLGFRAME) - 1) % 55; pt.y = -(rc.top + GetSystemMetrics(SM_CYDLGFRAME) - 1)% 53; } // Set brushOrg // This is very important!! brush.UnrealizeObject(); pDC->SetBrushOrg(pt); // return new skin-brush! return (HBRUSH)brush; }
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。