在窗口上划线

  利用Windows gdi给创建的窗口划线

  其中用到的函数有:

  DC (设备上下文, Device Contexts)是 GDI 编程中一个很基础同时也很重要的概念,是windows提供的,操作物理设备(显示屏,打印机)的接口。

  

  

  BeginPaint 与 EndPaint

  用于从目标窗口获取可画图的 DC,以及关闭这个 DC。

  

HDC BeginPaint(
  _In_   HWND hwnd,             // 传入想要获取 DC 的窗口句柄
  _Out_  LPPAINTSTRUCT lpPaint  // 保存目标窗口的绘图信息
);
 
 
BOOL EndPaint(
  _In_  HWND hWnd,                  // 目标窗口的句柄
  _In_  const PAINTSTRUCT *lpPaint  // 目标窗口的绘图信息
);

 

  

  SelectObject

  设置目标 DC 选中指定的对象(如画笔、画刷、图片等等)。

   

HGDIOBJ SelectObject(
  _In_  HDC hdc,        // 目标 DC 的句柄
  _In_  HGDIOBJ hgdiobj // 被选中的对象
);

 

  

  CreatePen

  创建一个画笔(pen)对象。

   

HPEN CreatePen(
  _In_  int fnPenStyle,     // 样式
  _In_  int nWidth,         // 宽度
  _In_  COLORREF crColor    // 颜色
);

 

  

  MoveToEx

  移动绘制的初始位置。未移动则默认是 (0,0)。(C语言基础好的可以联想 fseek 函数)

   

BOOL MoveToEx(
  _In_   HDC hdc,           // 操作目标DC的句柄
  _In_   int X,             // x 坐标
  _In_   int Y,             // y 坐标
  _Out_  LPPOINT lpPoint    // 保存移动后的当前坐标
);

 

  

  LineTo

  使用当前选中的对象(selected object、通常是画笔)从当前位置绘制一条直线到目标位置。

  

BOOL LineTo(
  _In_  HDC hdc,    // 目标DC句柄
  _In_  int nXEnd,  // 目标位置 x 坐标
  _In_  int nYEnd   // 目标位置 y 坐标
);

 

  

void Paint(HWND hwnd) 
{
    // paint struct 绘图结构体,存储目标窗口可以绘图的客户端区域(client area)
    PAINTSTRUCT ps;
    HDC hdc;   // DC(可画图的内存对象) 的句柄
    HPEN hpen; // 画笔
 
    // 通过窗口句柄获取该窗口的 DC
    hdc = BeginPaint(hwnd, &ps);
    // 创建画笔
    hpen = CreatePen(PS_SOLID, 1, RGB(255,0,0));
    // DC 选择画笔
    SelectObject(hdc,hpen);
    // (画笔)从初始点移动到 50,50
    MoveToEx(hdc, 50, 50, NULL);
    // (画笔)从初始点画线到 100,100
    LineTo(hdc, 150, 100);
 
    EndPaint(hwnd, &ps);
}

 

  

posted @ 2017-02-15 22:55  孤独行走的艾达  阅读(407)  评论(0编辑  收藏  举报