mfc使用不同类型的画刷填充矩形
2014-12-06 20:11
323 查看
画刷是在画刷画封闭曲线时用来填充的颜色,MFC的CBrush类封装了windowsGDI画刷,通过它,对CDC类所绘制的封闭图形的填充,可以填充颜色和纹理。
首先给出本次的demo
下面给出核心代码:
在OnDraw函数中实现绘图操作
void CMFCApplication15View::OnDraw(CDC* pDC)
{
CMFCApplication15Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CBrush brush[7], *pOldbrush;
brush[0].CreateSolidBrush(RGB(200, 0, 200));
brush[1].CreateHatchBrush(HS_BDIAGONAL, RGB(128, 0, 0));
brush[2].CreateHatchBrush(HS_CROSS, RGB(0, 0, 128));
brush[3].CreateHatchBrush(HS_DIAGCROSS, RGB(0, 128, 0));
brush[4].CreateHatchBrush(HS_FDIAGONAL, RGB(128, 128, 0));
brush[5].CreateHatchBrush(HS_VERTICAL, RGB(0, 128, 128));
brush[6].CreateHatchBrush(HS_HORIZONTAL, RGB(128, 128, 128));
pOldbrush = pDC->SelectObject(&brush[0]);
pDC->Rectangle(10, 10, 160, 110);
pDC->TextOutW(10, 115, _T("实心刷子"));
pDC->SelectObject(&brush[1]);
pDC->Rectangle(180, 10, 330, 110);
pDC->TextOutW(180, 115, _T("HS_BDIAGONAL"));
pDC->SelectObject(&brush[2]);
pDC->Rectangle(350, 10, 500, 110);
pDC->TextOutW(350, 115, _T("HS_CROSS"));
pDC->SelectObject(&brush[3]);
pDC->Rectangle(520, 10, 670, 110);
pDC->TextOutW(520, 115, _T("HS_DIAGCROSS"));
pDC->SelectObject(&brush[4]);
pDC->Rectangle(10, 140, 160, 240);
pDC->TextOutW(10, 245, _T("HS_FDIAGONAL"));
pDC->SelectObject(&brush[5]);
pDC->Rectangle(180, 140, 330, 240);
pDC->TextOutW(180, 245, _T("HS_VERTICAL"));
pDC->SelectObject(&brush[6]);
pDC->Rectangle(350, 140, 500, 240);
pDC->TextOutW(350, 245, _T("HS_BERTICAL"));
pDC->SelectObject(pOldbrush);
for (int i = 0; i < 7; i++){
brush[i].DeleteObject();
}
}
除此之外,MFC中还可以使用位图画刷来进行封闭图形的填充,方法如上。
CBitmap bitmap;
bitmap.LoadBitamp(IDB_BITMAP1);
brush.CreatePatternBrush(&bitmap);
首先给出本次的demo
下面给出核心代码:
在OnDraw函数中实现绘图操作
void CMFCApplication15View::OnDraw(CDC* pDC)
{
CMFCApplication15Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CBrush brush[7], *pOldbrush;
brush[0].CreateSolidBrush(RGB(200, 0, 200));
brush[1].CreateHatchBrush(HS_BDIAGONAL, RGB(128, 0, 0));
brush[2].CreateHatchBrush(HS_CROSS, RGB(0, 0, 128));
brush[3].CreateHatchBrush(HS_DIAGCROSS, RGB(0, 128, 0));
brush[4].CreateHatchBrush(HS_FDIAGONAL, RGB(128, 128, 0));
brush[5].CreateHatchBrush(HS_VERTICAL, RGB(0, 128, 128));
brush[6].CreateHatchBrush(HS_HORIZONTAL, RGB(128, 128, 128));
pOldbrush = pDC->SelectObject(&brush[0]);
pDC->Rectangle(10, 10, 160, 110);
pDC->TextOutW(10, 115, _T("实心刷子"));
pDC->SelectObject(&brush[1]);
pDC->Rectangle(180, 10, 330, 110);
pDC->TextOutW(180, 115, _T("HS_BDIAGONAL"));
pDC->SelectObject(&brush[2]);
pDC->Rectangle(350, 10, 500, 110);
pDC->TextOutW(350, 115, _T("HS_CROSS"));
pDC->SelectObject(&brush[3]);
pDC->Rectangle(520, 10, 670, 110);
pDC->TextOutW(520, 115, _T("HS_DIAGCROSS"));
pDC->SelectObject(&brush[4]);
pDC->Rectangle(10, 140, 160, 240);
pDC->TextOutW(10, 245, _T("HS_FDIAGONAL"));
pDC->SelectObject(&brush[5]);
pDC->Rectangle(180, 140, 330, 240);
pDC->TextOutW(180, 245, _T("HS_VERTICAL"));
pDC->SelectObject(&brush[6]);
pDC->Rectangle(350, 140, 500, 240);
pDC->TextOutW(350, 245, _T("HS_BERTICAL"));
pDC->SelectObject(pOldbrush);
for (int i = 0; i < 7; i++){
brush[i].DeleteObject();
}
}
除此之外,MFC中还可以使用位图画刷来进行封闭图形的填充,方法如上。
CBitmap bitmap;
bitmap.LoadBitamp(IDB_BITMAP1);
brush.CreatePatternBrush(&bitmap);
相关文章推荐
- MFC画图(画线、画矩形、画刷画笔的使用)
- MFC绘制点,线,矩形以及画刷,字体,位图的使用
- MFC画图(画线、画矩形、画刷画笔的使用)
- MFC画图(画线、画矩形、画刷画笔的使用)
- MFC绘图1--使用不同DC
- 使用STL和MFC到底有什么不同?
- Struts的ActionForm中不同类型属性的使用方法总结
- [C++ VC MFC] VC常用数据类型使用转换
- MFC绘图--使用不同DC
- windows控制台中使用不同颜色显示不同类型的日志
- MFC绘图1--使用不同DC
- 数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?
- DLL函数定义和函数实现写函数类型的不同, 引起不能使用Dll中的函数
- 如何正确使用不同类型的WSDL文件
- Delphi下的GDI+编程[7] 单色画刷-SolidBrush & 填充矩形-FillRectangle
- 语法基础: 使用不同的数据类型标记数组
- 如何使用MFC和类型库创建自动化项目
- Struts的ActionForm中不同类型属性的使用方法总结
- QA:请问TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同,该如何使用?
- MFC数据类型及使用汇总