第七章总结

7.2.2画直线
画直线使用CDC类的LineTo()函数两个重载版本:
BOOL  LineTo(int  x, int  y);
BOOL  LineTo(POINT  point);
参数x、y或point指定直线的终点位置,此函数从当前点到指定的终点之间画一条直线,当前点包括在直线上,而终点不包括在直线上。如果画线成功返回非0值,否则返回0.
CDC类的另一个函数MoveTo()用于移动当前点的位置:
CPoint  MoveTo(int x,int y);
CPoint  MoveTo(POINT point);
参数x、y或point指定当前点的位置。
7.2.3画矩形
BOOL  Rectangle(int  x1,int  y1,int  x2,int  y2);
x1,y1,x2,y2用于指定矩形左上角和右下角的坐标
BOOL  Rectangle(LPCRECT  lpRect);
lpRect是一个指向RECT结构的指针,RECT用于描述矩形的结构
RECT结构的前两个成员定义矩形左上角的横、3坐标,而后两个成员定义矩形右下角的横、纵坐标。
如果画矩形成功Rectangle()函数返回非0值,否则返回0.
7.2.4画圆及椭圆
CDC类的Ellipse()函数用于话椭圆,两种重载版本:
BOOL  Ellipse(int  x1,int  y1,int  x2,int  y2);
x1,y1,x2,y2用于指定椭圆外接矩形左上角和右下角的坐标。
BOOL  Ellipse(LPCRECT  lpRect);
lpRect为指向RECT结构的指针。
Ellipse()函数中椭圆的形状由其外接矩形来控制。
如果将外接矩形设置为正方形,则Ellipse()就可用于画圆。
如果画椭圆成功Ellipse()函数返回非0值,否则返回0.
7.3绘图工具的使用
MFC中用CPen类封装了Windows的画笔、用CBrush类封装了Windows的画刷、用CBitmap类封装了Windows的位图、用CFont类封装了Windows的字体、用CPalette类封装了Windows的调色板、用CRgn类封装了Windows的区域。
7.3.2画笔与画刷
1.创建画笔
创建画笔的两种方法
(1)       一步构造法:利用CPen类的带参构造函数来完成画笔对象的创建及初始化。CPen类的带参函数:
CPen(int  nPenStyle , int  nWidth , COLORREF  crColor);
参数nPenStyle指定画笔的风格
参数nWidth指定笔的宽度
参数crColor指定笔的RGB颜色值
(2)       二步构造法:CPen类的无参构造函数构造CPen类的对象,然后调用CPen类的CreatePen()或CreateIndirect()函数初始化画笔对象。CreatePen()函数版本:
BOOL  CreatePen(int  nPenStyle,int  nWidth);
参数nPenStyle指定画笔的风格
参数nWidth指定笔的宽度
       2.创建画刷
CBrush类有CreateSolidBrush()、CreateHatchBrush()、CreateBrushIndirect()、CreatePatternBrush()、CreateDIBPatternBrush()、CreateSysColorBrush()等多个成员函数来建立画刷。
创建画刷的两种方法:
(1)              一步构造法:利用CBrush类的带参构造函数来完成画刷对象的创建及初始化。
CBrush(COLORREF  crColor);
参数crColor指定画刷的前景颜色
如果函数运行成功,返回非0值,否则返回0.
7.3.3图形填充
  用CDC类的FloodFill()成员函数可完成对封闭图形的填充。
7.3.4绘图过程
1.将画笔与画刷选入设备描述符表
 画笔与画刷创建完后,必须将其选入设备描述符表,再使用。设备描述符表只能保存一种画笔和画刷,新的画笔与画刷选入设备描述符表后,设备描述符表原有的画笔与画刷将不再使用,除非将其重新选回设备描述符表。
使用CDC类的SelectObject()函数可以完成将画笔与画刷选入设备描述符表的工作。
参数:pPen和pBrush分别为欲选入设备描述符表的画笔对象的指针。
返回值:分别为被替换出的设备描述符表内原画笔与画刷对象的指针。
1.       恢复设备描述符表的原有属性
一旦将画笔或画刷等选进设备描述符表对象,它会保留在设备描述符表对象内一直到再次选入新的画笔或画刷为止。一般在一个函数内改变了设备描述符表的画笔或画刷等属性时,应在该函数退出前在恢复设备描述符表原来的属性,方法是调用SelectObject()函数并以旧的画笔或画刷作为其参数。
7.3.5绘图模式
忽略屏幕显示内容用画笔简单地画图到完全忽略画笔仅保留屏幕内容。
代码
           绘图模式
R2_BLACK
像素的颜色总为黑色
R2_WHITE
像素的颜色总为白色
R2_NOP
像素保留不变
R2_NOT
像素是屏幕原来的颜色的翻转
R2_COPYPEN
像素是笔的颜色
R2_NOTCOPYPEN
像素是笔的颜色的翻转
R2_MERGEPENNOT
像素颜色=((NOT 屏幕颜色)OR笔颜色)
R2_MASKPENNOT
像素颜色=((NOT 屏幕颜色)AND笔颜色)
R2_MERGENOTPEN
像素颜色=((NOT 屏幕颜色)OR笔颜色)
R2_MASKNOTPEN
像素颜色=((NOT 屏幕颜色)AND笔颜色)
R2_MERGEPEN
像素颜色=(笔颜色OR屏幕颜色)
R2_NOTMERGEPEN
像素颜色=NOT(笔颜色OR屏幕颜色)
R2_MASKPEN
像素颜色=(笔颜色AND屏幕颜色)
R2_NOTMASKPEN
像素颜色=NOT(笔颜色AND屏幕颜色)
R2_XORPEN
像素颜色=(笔颜色XOR屏幕颜色)
R2_NOTXORPEN
像素颜色=NOT(笔颜色XOR屏幕颜色)
7.4文本输出
7.4.1文本输出函数
字符串显示函数
Windows中输出文本,常用的有CDC类的3个成员函数
TexOut():显示一个字符串
ExtTextOut():在一个矩形区域中输出一个字符串
DrawText():在一个矩形区域中按某一格式输出字符串
介绍TextOut()函数的用法:
Virtual  BOOL  TextOut(int  x,int  y,LPCTSTR  lpszString,int  nCount);
参数x,y指定显示字符串的起始坐标,lpszString为指向待显示字符串的指针,nCount为字符个数。
BOOL  TextOut(int  x,int  y,const  CString&  str);
参数x,y指定显示字符串的起始坐标,而待显示的字符串由str给出。
显示成功均返回非0值,显示不成功返回0.
2.颜色设备函数
  显示文本时若要指定前景或背景颜色,可用CDC类的如下两函数:
Virtual  COLORREF  SetTextColor(COLORREF  crColor);
此函数设置输出文本的颜色为crColor参数指定的值,函数的返回值为设置前的文本颜色值。
Virtual  COLORREF  SetBkColor(COLORREF  crColor);
此函数设备输出文本的背景颜色为crColor参数指定的值,函数的返回值为设置前的文本背景颜色值。
3.对齐方式设置函数
可以用CDC类的SetTextAlign()函数设置输出文本的对齐方式:
UINT  SetTextAlign(UINT  nFlags);
参数nFlags用于指定对齐方式。
一次可以指定两组以上的值,各个值间用按位与符号“|”练起来。
2.       在Windows里删除文本
3.       可用GetBKColor()函数获得背景颜色,并建立此种颜色的画笔和实线画刷,然后用GetTextMetrics()可以确定当前字体的高度,并用GetTextMetrics()确定想要删除的串的长度,最后用Rectangle()画矩形删除此文本。
CDC类的Rectangle()函数用于画矩形有两个重载版本:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值