HDC 的使用

画图方法:
1.获取设备环境
  HDC hdc;
  hdc=BeginPaint(HWND,LPPAINTSTRUCT);//开始画图(获取设备环境)----------EndPaint(HWND,LPPAINTSTRUCT);//结束画图
  hdc=GetDC(HWND);//开始画图(获取设备环境-功能更强)-------------ReleaseDC(HWND);//结束画图

3.设置画笔
  HPEN hPen;//定义画笔的句柄
  hPen=(HPEN)GetStockObject(nPenStyle);/hPen=CreatePen(nPenStyle,nWidth,rgbColor);//定义画笔
  SelectObject(HDC,HPEN); //选择画笔
  DeleteObject(HPEN);//删除画笔
4.设置画刷
  HBRUSH hBrush; //定义画刷的句柄
  hBrush=(HBRUSH)GetStockObject(nBrushStyle); /CreatSolidBrush(rgbColor);/CreateHatchBrush(nHctchStyle,rgbColor);//定义的画刷
  SelectObject(HDC,HBRUSH); //选择画刷
  DeleteObject(HBRUSH); //删除画刷
5.主要函数
  1)颜色宏:RGB(nRed, nGreen,nBlue)
  2)设置画笔当前位置的函:BOOL MoveToEx(HDC hdc,int X, int Y,LPPOINT lpPoint )
  3)从当前位置向指定坐标点画直线的函数:BOOL LineToEx(HDC hdc,int X,int Y);
  4)从当前位置开始,依次用线段连接lpPoints中指定的各点的函数BOOL Polyline(HDC hdc,LPPOINT lpPoints,int nCount)
  5)绘制椭圆弧线的函数BOOL Arc(HDC hdc,int X1,intY1, int X2,int Y2,int X3,int Y3,int X4,int Y4 )
  6)使用当前画笔绘制一个饼图,并使用当前画刷进行填充的函数:BOOL Pie(HDC hdc,int X1,intY1,int X2,int Y2,int X3,int Y3,int X4,int Y4 )
   说明:(x3,y3),(x4,y4)与圆心的连线把圆割成饼
  7)使用当前画笔绘制一个矩形,并使用当前画刷进行填充的函数:BOOL Rectangle(HDC hdc,int X1,int Y1,int X2,int Y2)
  8)绘制一个圆角矩形:BOOL RoundRect(HDC hdc,int X1,int Y1,int X2,int Y2,int nHeight,int nWidth)
  9)绘制一个椭圆:BOOL Ellipse(HDC hdc,intX1,intY1,intX2,intY2)
 10)绘制一个多边形:BOOL Polygon(HDC hdc,LPPOINT lpPoints,int nCount)


1.设置映像模式:将逻辑单位转化为设备的度量单位
  窗口:对应逻辑坐标系上程序员设定的区域
  视口:对应实际输出设备上程序员设定的区域
  我们看到的都是视口,设置映像模式实际上就是设置逻辑图像与物理输出图像间的比例.
  1) 设置映像模式SetMapMode(hdc,nMapMode)
     获取映像模式GetMapMode(hdc)
    映像模式(nMapMode)  将一个逻辑单位映射为  坐标系设定
 MM_ANISOTROPIC   系统确定   Optional(窗口:视口表现为:窗口高:视口高;窗口宽:视口宽)
 MM_HIENGLISH   0.001英寸   Y上,X右
 MM_HIMETRIC   0.01毫米   Y上,X右   
 MM_ISOTROPIC   系统确定   Optional,但X:Y=1:1(窗口:视口表现为:min{窗口高:视口高,窗口宽:视口宽})
 MM_LOENGLISH   0.01英寸   Y上,X右
 MM_LOMETRIC   0.1毫米    Y上,X右
 MM_TEXT(默认)   一个像素   Y下,X右
 MM_TWIPS   1/1440英寸   Y上,X右  
  2) 窗口区域的定义BOOL Set WindowExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
     视口区域的定义BOOL Set ViewportExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
  3) 视口的缺省原点和窗口的缺省原点均为(0,0)
     设置窗口原点:BOOL SetWindowOrgEx(HDC hdc,int X,int Y,LPPOINT lpPoint)
     设置视口原点:BOOL SetViewOrgEx(…)
2.获取系统画笔时的类型nPenStyle:WHITE_PAN、BLACK_PAN、DC_PAN、NULL_PAN
  创建画笔时的类型nPenStyle:PS_DASH、PS_DASHDOT、PS_DASHDOTDOT、PS_DOT、PS_INSIDEFRAME、PS_NULL、PS_SOLID
  获取系统画刷时的类型nBrushStyle: BLACK_BRUSH、DKGRAY_BRUSH、GRAY_BRUSH、HLLOW_BRUSH、LTGRAY_BRUSH、NULL_BRUSH、WHITE_BRUSH
  创建画刷时的类型nBrushStyle:HS_BDIAGONAL、HS_DIAGCROSS、HS_FDIAGNAL、HS_CROSS、HS_HORIZONTAL、HS_VERTICAL
3.PAINTSTRUCT数据结构是Windows系统提供的标识无效区域的结构,其定义如下:
  Typedef struct tagPAINTSTRUCT
  {
    HDC hdc; //设备环境句柄
    BOOL fErase; // fErase一般取真值,表示擦除无效矩形的背景
    RECT rcPaint; //无效矩形标识
    BOOL fRestore; //系统保留
    BOOL fIncUpdate; //系统保留
    BYTE rgbReserved[16]; //系统保留
  } PAINTSTRUCT;
  其中:rcPaint 为标准的RECT数据结构,其作用是标识无效矩形,该结构中包含了无效矩形的左上角和右下角的坐标。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值