MFC阶段一

高级的GDI编程:

一个图形设备描述表实际上就是对一种安装在机器上的视频图形卡的描述。

1、画笔

画笔的创建

HPEN hPen = NULL;

(1)使用存储对象,存储对象只是Windows所拥有的一些默认样式的对象。

HGDIOBJ GetStockObject( int fnObject );

如果要使用白色的画笔:

HPEN hPen = NULL ;

hPen = GetStockObject( WHITE_PEN );

(2)创建一个用户定义的画笔

HPEN CreatePen(

                                int  fnPenStyle,     //画笔的颜色

                                int  nWidth,           //画笔的宽度

                                COLORREF crColor  //颜色

                              );

线条样式

PS_NULL       画笔不可见

PS_SOLID     画笔为实线

PS_DASH      画笔为虚线

PS_DOT         画笔为点线

PS_DASHDOT 画笔为点画线

PS_DASHDOTDOT 画笔为双点画线

以下创建画笔代码:

HPEN hPen = CreatePen( PS_SOLID, 1, RGB( 255, 0 , 0 ) );

HPEN hOldPen = NULL ;

hOldPen = SelectObject( hDC , hPen ) ;

DeleteObject( hPen );

画刷:

画刷的定义:

HBRUSH hBrush = NULL ;

使用默认的浅灰色画刷:

hBrush = GetStockObject( LTGRAY_BURSH );

在画刷的创建中还可以创建纯色的画刷,其函数原型为:

hBrush = GetStockObject( COLORREF  crColor );

下面是创建一个纯色的画刷,并且选入到设备中进行绘图:

HBRUSH hBrush = NULL ;

HBRUSH hOld = NULL ;

hBrush = CreateSolidBrush( RGB( 255 , 0 , 0 ) );

hOld = SelectObject( hBrush );

SelectObject( hOld );

DeleteObject( hBrush );



图形的绘制:


1、点的绘制

COLORREF  SetPixel (  HDC  hdc , int x ,  int   y ,   COLORREF  crColor   ) ;

其中(  x , y  )是窗口客户区内容任何一点的坐标。


2、线条的绘制


BOOL  MoveToEx(  HDC  hdc ,  int   x ,   int   y ,   LPPOINT  lpPoint   ) ;

BOOL LineTo ( HDC  hdc  , int xEnd ,  int   y End  )  ;

MoveToEx()函数是将现在的绘图坐标移动到( x ,  y )处。

lpPoint  是一个指针,目的是在调用这个函数的时候,系统将绘图坐标移动后,将原来的坐标保存到这个参数中,方便今后修改使用。 通常为NULL ,

LineTo() 是通知系统,从当前的绘图坐标开始,向( xEnd , yEnd)坐标位置处绘制一条线段


例:从(10,20 ) 的位置开始向 (100, 90 )绘制一条直线,色彩为绿色

HWND hWnd ;

HDC hDC = GetDC( hWnd ) ;

//创建画笔,并且迁入设备环境

HPEN  hPen = CreatePen (  PS_SOLID , 1, RGB(0 , 255,  0 ) ) ;

HPEN hOld = SelectObject( hDC , hPen ) ;

//绘制线条

MoveTo( hDC , 10, 20 , NULL ) ;

LineTo( hDC , 100 , 90 ) ;

//完成绘制,恢复设备环境

SelectObject( hDC , hOld );

DeleteObject( hPen );

ReleaseDC( hWnd , hDC ) ;


矩形的绘制

矩形绘制函数:

BOOL Rectangle(

                           HDC  hdc ;

                           int     nLetfRect ;    //左上角x坐标

                           int     nTopRect;    // 左上角y坐标

                           int     nRightRect;  //右下角x坐标

                           int     nBottomRect;  //右下角y坐标

                      ) ;

例:使用红色画笔绘制矩形,并且使用蓝色画刷填充

//创建画笔和画刷

HPEN  hPen  = CreatePen ( PS_SOLID ,  1 , RGB( 255,  0 , 0 ) ) ;

HBRUSH  hBrush = CreateSolidBrush( RGB( 0 , 0 , 255 ));

//选入设备环境

SelectObject(  hPen );

SelectObject( hBrush );

//绘制矩形

Rectangle( hDC , 20  , 20  , 40 , 40 );





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值