OnDraw

OnDraw(CDC* pDC)Visual C++ MFC中函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中。
基础资料
  • 外文名:OnDraw
  • 功能:应用程序窗口的客户区进行绘图
  • 简介

    函数介绍

    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值,函数的返回值为原来的颜色,RGB值写法是RGB(0,255,0),括号内的三个值从0到255。

    例如:virtual COLORREF SetTextColor(COLORREF RGB(0,255,0));

    获得当前文本颜色

    COLORREFGetTextColor() const;

    设置文本的背景颜色

    virtual COLORREF SetBkColor(COLORREF crColor);

    参数crColor是要使用的文本背景颜色的RGB值,函数的返回值为原来的背景颜色

    获得当前背景颜色

    COLORREF GetBkColor() const;

    设置文本字符的间距

    intSetTextCharacterExtra(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(int x1,int y1, int X2, int Y2 )

    描述:绘制一个实心的椭圆起始点(x1,y1),结束点(x2,y2)。

    x1,y1是椭圆外接矩形左上角点的坐标,(x2,y2)是椭圆外接矩阵右下角点的坐标。

    例如:pDC->Ellipse(250, 421, 120, 100 );

    画笔CPen

    CPen类的构造函数:

    CPen(int style,int width,COLORREF 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函数之外的任何地方使用。

    首页
    科技
    #贵族
    最新入驻
    贾科莫·普契尼
    Caroline Lufkin
    翁建宇
    相关阅读
    CClientDC
    内容词条·5694人浏览
    CreateIC
    内容词条·726人浏览
    ReleaseDC
    内容词条·2743人浏览
    OnPaint
    内容词条·6159人浏览
    BeginPaint
    内容词条·1246人浏览
    SelectObject
    内容词条·6453人浏览
    • 网站地图
    • |

    Copyright 2023 fuwu029.com赣ICP备2022008914号-4