简单图形编程学习


在windows系统中,程序都是通过图形设备接口(GDI)的抽象接口和硬件打交道。

GDI是Windows系统核心的三种动态链接库之一,管理Windows系统的所有程序的图形输出。


设备描述表(DC),DC是一个数据结构,当程序向GDI设备中绘图时,需要访问该设备的DC。MFC将GDI的DC封装在C++类中,包括CDC类和CDC派生类,这些类中的许多成员都是对本地GDI绘图函数进行简单封装而形成的内联函数。

 

CDC类是GDI封装在MFC中最大的一个类,它表示总的DC




(1)画点

SetPixel()函数可以在制定的坐标位置按指定的 颜色画点。函数原型如下:

COLORREF CDC::SetPixel(int X,int Y,COLORREF crColor);

其中,X Y为点的坐标,crColor为点的颜色值。函数调用成功返回像素的颜色值。颜色值通过RGB(Red,Green,Bule)来设置,如在视图类中OnDraw()函数中加入下列语句:

pDC->TextOut(20,20,_T("point:"));
pDC->SetPixel(100,20,RGB(255,0,0));
pDC->SetPixel(110,20,RGB(0,255,0));
pDC->SetPixel(120,20,RGB(0,0,255));

运行结果为:


(2)画直线和折线

画直线需要LineTo()和MoveTo()两个函数配合使用

BOOL CDC::LineTo(int nXEnd,int nYEnd); //以当前位置所在点为直线的起点,直线的终点位置由nxEnd, nYEnd)控制

BOOL CDC::MoveTo(int X,int Y); //将当前位置移动到指定位置,它并没有画出直线。

如在视图类中OnDraw()函数中加入下列语句:

pDC->TextOut(20,60,_T("Line"));
pDC->MoveTo(20,90);
pDC->LineTo(160,90);

运行结果为:


Polyline()函数用来画一条折线,而PolyPolyline()函数用来画多条折线。函数原型如下:

BOOL CDC::Polyline(COUST POINT *lppt,int cPoints);

BOOL CDC::PolyPolyline(COUST POINT *lppt,COUST  DWORD *lpdwPolyPoints,DWORD cCount);

在Polyline()函数中,lppt是指向折线顶点的指针,而cPoints是折线顶点数组中的顶点数。例如,绘制一条具有4个顶点的折线,

POINT polylinepoint[4]={{70,240},{20,190},{70,190},{20,240}};

pDC->Polyline(polylinepoint,4);


在PolyPolyline()函数中,lppt是指向折线顶点的指针,而lpdwPolyPoints是折线顶点数组,cCount参数指定折线的数目。例如

POINT polylinepointPt[9]={{95,160},{120,185},{120,250},{145,160},{120,185},{90,185},{150,185},{80,210},{160,210}};

DWORD dwPolyPoints[4]={3,2,2,2}; //分四段折线,分别占用3,2,2,2个顶点

pDC->PolyPolyline(polylinepointPt,dwPolyPoints,4);





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值