MFC处理绘图_mfc简单绘图
MFC处理绘图由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“mfc简单绘图”。
(一)简单的图形输出
1、点: pDC->SetPixel(Cpoint(200,200),RGB(255,0,0,));// 在 [200,200] 的位置画一个红点2、线: pDC->MoveTo(0,0);// 直线起点的坐标为(0,0)
pDC->LineTo(100,100)// 从起点(0,0)到终点(100,100)画一条直线
3、矩形: Crect rect(0,0,100,100);
pDC->Rectangle(&rect);// 画一个长 100,宽 100 的矩形
4、圆和椭圆:
Crect rect(0,0,100,100);
pDC->Ellipse(&rect);
Crect rect(0,0,50,100);
pDC->Ellipse(&rect);
5、多边形:
CPoint poly[4];
poly[0]=CPoint(0,0);
poly[1]=CPoint(50,50);
poly[2]=Cpoint(50,100);
poly[3]=Cpoint(0,50);
pDC->Polygon(poly,4);
(二)库存对象
库存对象是由操作系统维护的用于绘制屏幕的常用对象,包括库存画笔、画刷、字体等。使用 SelectStockObject()函数可以直接选择库存对象,修改系统默认值。
例如,在视图中选用画笔和画刷库存对象来画图。
Void Cexam3_3View::OnDraw(CDC*pDC)
{
Cexam3_2Doc*pDoc=GetDocument();
CRect rect;
Rect.SetRect(Cpoint(0,0),Cpoint(200,200));
pDC->SelectStockObject(WHITE_PEN);// 选用白色画笔
pDC->SelectStockObject(GRAY_BRUSH);// 选用灰色画刷
pDC->Rectangle(rect);
pDC->MoveTo(0,0);
pDC->LineTo(200,200);
pDC->MoveTo(0,200);
pDC->LineTo(200,0);
}
(三)创建和使用自定义画刷和画笔
1、创建 CPen 的的方法:
•定义时直接创建
Cpen MyPen(PS_SOLID,2,RGB(255,0,0));
(2)定义 Cpen 对象,再调用 CreatePen()函数
Cpen pen;
Pen.CreatePen(PS_SOLID,2,RGB(255,0,0));
2、创建画刷的方法:
(1)创建实心画刷的 CreateSolidBrush()函数
Cbrush bs;
Bs.CreateSolidBrush(RGB(255,0,0));
(2)创建带阴影的画刷的 CreateHatchBrush()函数
Bs.CreateHatchBrush(HS_CROSS,RGB(255,0,0));// 创建一个带十字阴影的红色画刷
(3)创建位图画刷的 CreatePatternBrush()函数
本函数的应用如下:
CbitMap bmp;
Bmp.LoadBitMap(IDB_MYBITMAP);
Cbrush bs;
Bs.CreatePatternBrush(&bmp);
例4_
3、在视图中绘制三个图形,一个用阴影风格的画刷画的椭圆形,一个用深兰色实心画刷画的圆角矩形,一个用浅灰色画刷画的饼形。
void CExam4_3View::OnDraw(CDC* pDC)
{
CExam4_3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//设置影象模式
pDC->SetMapMode(MM_ANISOTROPIC);
CPen NewPen,OldPen;
//将画笔选入设备上下文
NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255));
//创建深蓝色实心画刷
pDC->SelectObject(&NewPen);
CBrush NewBrush1,NewBrush2;
//将画刷选入设备上下文
NewBrush1.CreateSolidBrush(RGB(0,0,128));
//绘制圆角矩形
pDC->RoundRect(200,100,330,200,15,15);
//将库存对象浅灰画刷选入设备上下文
pDC->SelectStockObject(LTGRAY_BRUSH);
//绘制饼图
pDC->Pie(350,50,420,150,360,50,400,50);
//创建阴影画刷
NewBrush2.CreateHatchBrush(HS_DIAGCROSS,RGB(125,125,125));
pDC->SelectObject(NewBrush2);
//绘制椭圆
pDC->Ellipse(50,50,150,150);
}