参考:http://blog.sina.com.cn/s/blog_50eb38e00100amhe.html
1.文字信息显示
BOOL TextOut(int x, int y, LPCTSTRlpszString);
在指定坐标(x,y)处显示字符串lpszString的内容,显示成功返回非0值,否则返回0。
2.画线
画线工作需经两步完成:首先确定线的起始端位置,这可通过调用成员函数MoveTo完成,其原型为:
CPoint MoveTo ( int x, int y);
CPoint MoveTo ( POINT point );
MoveTo将绘图位置("看不见")移至指定坐标处,并返回移动前的绘图位置。确定了线的起点后,即可使用成员函数LineTo画线:
BOOL LineTo ( int x, int y);
BOOL LineTo ( POINT point );
其参数为线终点的坐标。
3.绘制矩形
BOOL Rectangle ( int x1, int y1, int x2, inty2 );
BOOL Rectangle ( LPCRECT lpRect );
其参数为需要绘制的矩形的左上角坐标(x1, y1)和右下角坐标(x2, y2)。
4.绘制椭圆
BOOL Ellipse(int x1, int y1, int x2, inty2);
BOOL Ellipse(LPCRECT lpRect);
其参数的含义为所绘椭圆的包含矩形的左上角和右下角坐标。
5.画多边形
BOOL Polygon ( LPPOINT lpPoints, int nCount);
其中参数lpPoints为一LPPOINT类型的指针,可用CPoint数组(存放多边形的各顶点坐标)作为实参。参数nCount为顶点个数。
6.其他绘图函数
还有画点SetPixel()、取指定坐标点的颜色GetPixel()、画弧Arc()、画弓形Chord()、画扇型Pie()、画圆角矩形InvertRect()和获取客户区的坐标GetClientRect()等,具体使用方法可参看MSDN联机帮助。
void CMainWindow::OnPaint ()
{
CPaintDC dc (this);
//
// Initialize the device context.
//
dc.SetMapMode (MM_LOENGLISH);
dc.SetTextAlign (TA_CENTER | TA_BOTTOM);
dc.SetBkMode (TRANSPARENT);
//
// Draw the body of the ruler.
//
CBrush brush (RGB (255, 255, 0));
CBrush* pOldBrush = dc.SelectObject (&brush);////使用新画笔,保存旧画笔
dc.Rectangle (100, -100, 1300, -200);
dc.SelectObject (pOldBrush);//// 恢复旧画笔
//
// Draw the tick marks and labels.
//
for (int i=125; i<1300; i+=25) {
dc.MoveTo (i, -192);
dc.LineTo (i, -200);
}
for (i=150; i<1300; i+=50) {
dc.MoveTo (i, -184);
dc.LineTo (i, -200);
}
for (i=200; i<1300; i+=100) {
dc.MoveTo (i, -175);
dc.LineTo (i, -200);
CString string;
string.Format (_T ("%d"), (i / 100) - 1);
dc.TextOut (i, -175, string);
}
}
绘制结果如下图: