OnDraw(CDC* pDC)详解

本文详细介绍了Windows绘图API的基本用法,包括设置文本颜色、背景颜色、字符间距及对齐方式等。此外还讲解了如何使用不同类型的画笔和画刷来绘制线条和填充图形,并提供了绘制矩形、椭圆等基本图形的方法。
摘要由CSDN通过智能技术生成
        OnDraw(CDC* pDC)
函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中
TextOut(int x,int y,CString& str)函数
参数x为文本显示在应用程序窗口用户区的水平位置,以像素为单位
参数y为文本显示在应用程序窗口用户区的垂直位置,以像素为单位
str为要显示的字符串,他是一个CString类的对象;
 
pDC->TextOut(50,50,"asdadsda");
 
设置文本颜色
virtual COLORREF SetTextColor(COLORREF crColor);
 
参数crColor是要使用的 文本 颜色的RGB值,函数的返回值为原来的颜色
获得当前文本颜色
 
COLORREF GetTextColor () const;
设置文本的背景颜色
 
virtual COLORREF SetBkColor(COLORREF crColor);
参数crColor是要使用的 文本 背景颜色的RGB值,函数的返回值为原来的背景颜色
获得当前背景颜色
 
COLORREF GetBkColor() const;
设置文本字符的间距
 
int SetTextCharacterExtra (int nCharExtra);
参数nCharExtra用来
设置文本字符的额外间距,以像素为单位,函数的返回值为字符的原间距
获得当前字符间距
 
int GetTextCharExtra() const;
设置文本的对齐方式
 
UINT SetTextAlign(UINT nFlags);
 
参数nFlags的值可以为:
TA_LEFT 左对齐
TA_CENTER 中间对齐
TA_RIGHT 右对齐
TA_TOP 顶部对齐
TA_BOTTOM 底部对齐
TA_BASELINE 以基线对齐
前3个用于水平方向
后3个用于垂直方向
字体和CFont类略
LineTo (x, y)
参数
x 一个整数,指示相对于父影片剪辑的注册点的水平位置。
y 一个整数,指示相对于父影片剪辑的注册点的垂直位置。
 
pDC->LineTo(123,456);
语法
Ellipse(x, y, RadiusX, RadiusY )描述
绘制一个实心的椭圆按照指定位置x,y为圆心,以 RadiusX 和 RadiusY指定的半径。
pDC->Ellipse(250, 421, 120, 100 );
画笔CPen类
CPen类的 构造函数
CPen(int style,int width,SOLORREF color);
COLORREF RGB(
BYTE bRed,
BYTE bGreen,
BYTE bBlue
);.
style样式
PS_SOLID 画实线
PS_DASH 画虚线
PS_DOT 画点线
PS_DASHDOT 画点划线
PS_DASHDOTDOT 画双点划线
PS_NULL 笔画不可见的画笔
PS_INSIDEFRAME 在一个图形内画边线的画笔
在创建了画笔之后,必须使用CDC的成员函数SelectObject把画笔载入DC,以替换DC中原来配置的默认画笔,然后才能使用该画笔绘制线条。
CPen* SelectObject(CPen* pPen);
参数为欲载入画笔的 指针 ,返回值为原来画笔的指针。以便在新画笔使用完后恢复原画笔。即在程序中应有如下代码:
CPen newPen(PS_DASHDOT,width,color);//创建新画笔
CPen* oldPen=pDC->SelectObject(&newPen);//载入新画笔并把旧画笔存入 指针变量 oldPen
在使用完新画笔绘制线条后,如果要恢复原画笔,则需要使用如下代码:
pDC->SelectObject(oldPen);
注意:除了PS_SOLID外其他的样式只在参数width=1是有效
画刷:CBrush
CBrush类的构造函数
CBrush(COLORREF color);
和CBrush(int style,COLORREF color);
参数style填充样式:
HS_BDIAGONAL以自左下角至右上角的45度斜线填充
HS_CROSS以十字交叉线填充
HS_DIAGCROSS以互相交叉的45度线填充
HS_FDIAGONAL以自左上角至右下角的45度斜线填充
HS_HORIZONTAL以水平线填充
HS_VERTICAL以垂直线填充
与使用画笔一样,在创建了画刷之后,如果要使用该画刷,则应使用CDC的成员函数:
CBrush * SelectObjet(CBrush* pBrush);
把画刷选入设备描述环境。并要定义一个画刷 指针 ,用来保存该函数返回的旧画刷指针
CBrush newBrush(COLORREF color);//这句可换成
//CBrush newBrush(int style,COLORREF color);
CBrush* oldBrush=pDC->SelectObject(&newBrush);
;//加入自己想要的语句
;
pDC->SelectObject(oldBrush);
Rectangle 构造函数 Rectangle(x:Number, y:Number, width:Number, height:Number)创建一个新的 Rectangle 对象,其左上角由 x 和 y 参数指定。如果调用此 构造函数 时不使用任何参数,将创建一个 x、y、width 和 height 属性均设置为 0 的矩形。
参数x:Number - 矩形左上角的x坐标。
y:Number - 矩形左上角的y坐标。
width:Number - 矩形的宽度,以像素为单位。
height:Number - 矩形的高度,以像素为单位。
绘制矩形代码:
CRect rect(30,30,300,300);
pDC->Rectangle(&rect);
绘图模式:
设置绘图模式的CDC成员函数为:
SetROP2 (int nDrawMode);
其中,参数为绘图模式,返回只为原来的绘图模式
常用的绘图模式如下:
R2_BLACK 无论画笔颜色如何,只用黑色绘图
R2_WHITE 无论画笔颜色如何,只用白色绘图
R2_NOP 无论画笔颜色如何,只用无色绘图
R2_NOT 用与背景颜色相反的颜色绘图
R2_NOTCOPYPEN 用与画笔色相反的颜色绘图
R2_COPYPEN 用画笔颜色绘图
R2_XORPEN 用把画笔色与背景色进行异或运算后的颜色绘图
CDC的其他派生类
窗口用户区设备描述环境类CClientDC
CPaintDC类的对象只能在视图类的OnDraw函数中使用,而CClientDC类的对象可以在除了OnDraw函数之外的任何地方使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值