绘制像素点
-
COLORREF SetPixel(int x ,int y,COLORREF color);
-
BOOL SetPixel1V(int x ,int y,COLORREF color);
-
COLORRE 颜色变量
绘制直线
创建画笔 CPen::CreatePen
- BOOL CreatePen(int nPenStyle,int nWidth,COLORRE color);
- CPen 封装了GDI画笔,可以选作设备上下文的画笔
- 若需要更换画笔,可以在创建新画笔对象后,选入设备上下文,就可以使用新画笔进行绘图,使用结束后将设备上下文恢复原状。
将画笔选入上下文 CDC::SelectObject
- CPen* SelectObject(CPen* pPen);【CBrush*,CBitmap同理】
- 将设备上下文的更换为新对象,同时返回指向原对象的指针。
删除GDI对象 CGdiObject::DeleteObject
- BOOL DeleteObject();
- 如果程序结束会自动删除GDI对象
- 不能删除正在被上下文调用的对象
// TODO: 在此处为本机数据添加绘制代码
//画笔对象NewPen,画笔对象指针pOldPen
CPen NewPen, * pOldPen;
//调用create()设置画笔
NewPen.CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
//调用SelectObject()将新画笔传入上下文,并保存原画笔指针
pOldPen=pDC->SelectObject(&NewPen);
//画直线
CPoint P0(20, 30);
pDC->MoveTo(P0);
pDC->LineTo(200, 300);
//恢复设备上下文,清楚画笔
pDC->SelectObject(pOldPen);
NewPen.DeleteObject();
绘制矩形 CDC::Rectangle
- BOOL Rectangle(int x1,int y1,int x2,int y2);
- BOOL Rectangle(LPCRECT lpRect);
- lpRect可以是CRect对象或RECT结构体变量的指针
pDC->Rectangle(100, 100, 900, 900);
CRect rect(100, 100, 900, 900);
pDC->Rectangle(rect);
- 绘制效果相同
画刷
创建画刷 CBrush::CreateSolidBrush
- BOOL CreateSolidBrush(COLORREF color);
- 也可以使用构造函数直接定义 CBrush(COLORREF color);
// TODO: 在此处为本机数据添加绘制代码
//画笔对象NewPen,画笔对象指针pOldPen
CPen NewPen, * pOldPen;
//调用create()设置画笔
NewPen.CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
//调用SelectObject()将新画笔传入上下文,并保存原画笔指针
pOldPen=pDC->SelectObject(&NewPen);
//创建画刷
CBrush NewBrush, * pOldBrush;
NewBrush.CreateSolidBrush(RGB(0, 0, 255));
//调用SelectObject()将新画刷传入上下文,并保存原画刷指针
pOldBrush = pDC->SelectObject(&NewBrush);
CRect rect(100, 100, 900, 900);
pDC->Rectangle(rect);
//恢复设备上下文,清除画笔、画刷
pDC->SelectObject(pOldPen);
NewPen.DeleteObject();
pDC->SelectObject(pOldBrush);
NewBrush.DeleteObject();
选入库函数CDC::SelecStockObject
- virtual CGdiObject* SelectStockObject(int nIndex)
- index 可以是库画刷代码或库画笔代码
绘制椭圆 CDC::Ellipse
- BOOL Ellipse(int x1,int y1,int x2,int y2);
- BOOL Ellipse(LPCRECT lpRect);
- lpRect是CRect对象
- x,y是外切矩形的左上、右下坐标
- 绘制圆则让矩形为正方形
年轮
- 定义30个外接矩形对象CRect CirumRect[30];
- 绘制了30个园但是只显示了一个,因为椭圆内部默认填充为白色;
- 循环中画刷要定义为透明
绘制多边形CDC::Polygon
- BOOL Polygon(lpRect lpPoints,int ncount);
- lpPoints指定多边形顶点数组指针,数组中的每个顶点是一个POINT结构或CPoint对象;nCount指定多边形顶点数组中的顶点个数。
- 该函数使用当前画刷填充多边形内部,并使用当前画刷绘制多边形边界线;多边形自动闭合。
CPoint P[4];
P[0].x=x1,P[0].y=y1;
...