2024年4月30日发(作者:)
1.创建画笔
当用户创建一个用于绘图的设备环境对象时,系统自动将一个像素单位宽度的实黑线的
画笔作为默认画笔。如果用户欲使用其他性质的画笔,首先就要创建该画笔。
创建画笔可以采用两种方法。一种方法是通过调用画笔Cpen类的一个带参构造函数来
构造一个Cpen类画笔对象。
Cpen Pen(int nPenStyle,int nWidth,COLORREF rgbColor)
其中第一个参数用于指定画笔样式;第二个参数用于指定画笔宽度;第三个参数用于指
定画笔颜色。画笔的样式说明参考表3.3;画笔的颜色可以通过Windows提供的GRB宏来
设置,其使用格式为:
RGB(nRed,nGreen,nBlue)
参数nRed、nGreen、nBlue分别表示红、绿、蓝分量值,数值范围为0~255。如RG
B(0,0,0)表示黑色;RGB(255,0,0)表示红色。表3.4列出了常用颜色的RGB值。
表3.3 画笔的样式说明
样 式
PS_SOLID
PS_DOT
PS_DASH
PS_DASHDOT
PS_DASHDOTDOT
PS_NULL
PS_INSIDEFRAME
注:各种虚线只有当线宽为1时才有效。
表3.4常用颜色的RGB值
颜 色
浅红
55
浅绿
浅蓝
浅黄
55
浅青
紫色
白色
0
55
20
0
55
0
2
0
55
2
55
2
0
2
55
2
深黄
28
深青
灰色
黑色
0
28
11
1
28
1
28
1
1
1
2
深蓝
0
2
0
深绿
RGB分量值
0
2
颜 色
0
深红
28
0
28
0
28
0
1
10
RGB分量值
10
0
说 明
实线
点线
虚线
点划线
双点划线
空的边框
边框实验
55
55
222
55
55
55
92
92
92
0 0
0
下面的代码创建了一个蓝色实线画笔:
CPen Pen(PS_SOLID,1,RGB(0,0,255));
创建画笔的另一个方法是首先声明一个CPen对象,然后调用CPen类的成员函数Create
Pen()创建特定的画笔。
CPen Pen;
Pen.CretePen(int nPenStyle,int nWidth,COLORREF rgbColor);
如下代码同样创建一个蓝色实线画笔:
CPen PenNew;
PenNew.CreatePen(PS_SOLID,1,RGB(0,0,255));
当需要多次改变画笔的属性时,多采用这种方法。
2.选择创建的画笔到设备环境中
创建画笔后,必须调用成员函数CDC::SelectObject()将创建的画笔选入设备环境对象
中。如果选择成功,函数SelectObject()将返回原来画笔对象的指针。一般情况下,在选
择新的画笔时应该保存原来的画笔对象,以备恢复。代码如下:
CPen *pPenOld;
pPenOld=pDC->SelectObject(&PenNew);
3.删除画笔
创建和选择画笔后,就可以使用该画笔对象进行绘图了。绘图完成后,为了及时释放内存
资源,应该调用成员函数CDC::SelectObject()恢复以前保存的画笔对象;调用成员函数
CgdiObject::DeleteObject()删除当前画笔对象。代码如下:
pDC->SelectObject(pPenOld);
PenNew.DeleteObject();
成员函数DeleteObject()用于删除底层的GDI对象,如果因为不慎,删除一个设
备环境对象正在使用的GDI对象,将会引起应用程序的运行异常。
1.创建画刷
画刷有三种基本类型:纯色画刷、阴影画刷和图案画刷。创建画刷的一种方法是通过调
用CBrush类三个不同的构造函数创建这三种类型的画刷。
创建纯色画刷:
CBrush brush(RGBColor);
此构造函数的参数指定纯色画刷的颜色。如下创建一个红色画刷:
CBrush brush(RGB(255,0,0));
创建阴影画刷:
CBrush brush(BrushStyle,RGBColor);
此构造函数的第一个参数指定画刷的样式,第二个参数指定颜色,画刷样式参见例3.2。
如下创建一个交叉的绿色阴影画刷:
CBrush brush2(HS_CROSS,RGB(0,255,0));
创建图案画刷:
CBrush brush(&temp);
此构造函数的参数指定画刷所使用的位图,该位图必须先装入内存中。
创建画刷的另一个方法,也可以先声明一个CBrush类画刷对象,然后调用初始化成员函
数创建特定的画刷。
常见的成员函数有:
CreateSolidBrush()
CreateHatchBrush()
CreatePatternBrush()
创建纯色画刷
创建阴影画刷
创建图案画刷
下面代码同样创建一个交叉的绿色阴影画刷。
CBrush BrushNew;
BrushNew.CreateHatchBrush(HS_CROSS,RGB(0,255,0));
2. 选择画刷
创建画刷后,同样必须调用成员函数CDC::SelectObject()将创建的画刷选入设备环境对
象中,同时保存以前的画刷。
CBrush *pBrushOld;
pBrushOld=pDC->SelectObject(&BrushNew);
3.删除画刷
同样为了释放资源,在使用完成画刷对象后,也要及时删除画刷对象,恢复原来的画刷
对象。
1.文字信息显示
文字信息显示的成员函数为:
BOOL TextOut(int x,int y,LPCTSTR lpszString);
在指定坐标(x,y)处显示字符串lpszString的内容,显示成功返回非0,否则返回0。
2.画点
画点的成员函数为:
COLORREF SetPixel(int x,int y,COLORREF color);
COLORREF SetPixel(POINT point,COLORREF color);
该函数在指定坐标(用参数x,y或point给出)处按给定颜色(color)画点,返回值为原来
此坐标颜色。
3.取指定坐标点的颜色
取指定坐标点的颜色的成员函数为:
COLORREF GetPixel(int x,int y) const;
COLORREF GetPixel(POINT point) const;
返回值为指定坐标处的颜色。
4.画线
画线工作需经两步完成:首先确定线的起始端位置,这可通过调用成员函数MoveTo完成,
其原型为:
Cpoint MoveTo(int x,int y);
Cpoint MoveTo(POINT point);
MoveTo将绘图位置移至指定坐标处,并返回移动前的绘图位置。确定了线的起点后,
即可使用成员函数LineTo画线:
BOOL LineTo(int x,int y);
BOOL LineTo(POINT point);
其参数为线终点的坐标。
5.绘制矩形
发布评论