4.03 绘图设备

基本概念

一般在 WM_PAINT 中使用

● 绘图设备 DC ( Device Context ) ,绘图上下文/绘图描述表

● HDC-DC 句柄,表示绘图设备

● GDI - Windows graphics device interface (Win32 提供的绘图 API)

● 颜色

计算机使用红、绿、蓝(8 位)

  1. R-0~255
  2. G-0~255
  3. B-0~255

每一个点颜色是 3 个字节 24 位保存 0-2^24-1

  1. 16位:5,5,6(过去,忽略)
  2. 32位:8,8,8,8绘图或透明度

● 颜色的使用

COLORREF-实际为 DWORD

例如: COLORREF nColor= 0;

● 赋值使用 RGB 宏

例如: nColor = RGB(0, 0,255);

● 获取 RGB 值

GetRValue/GetGValue/GetBValue

例如: BYTE nRed = GetRValue(nColor);

基本图形绘制

● SetPixel 设置指定点的颜色

  1. COLORREF SetPixel(
  2. HDC hdc.//DC句柄
  3. int X,//X坐标
  4. int Y.//Y坐标
  5. COLORREF crColor//设置的颜色
  6. );返回点原来的颜色
  7. PAINTSTRUCT ps = { 0 };
  8. HDC hdc = BeginPaint(hWnd, &ps);
  9. SetPixel(hdc, 100, 100, RGB(255,0,0));
  10. EndPaint(hWnd, &ps);

● 线的使用(直线、弧线)

MoveToEx: 指名窗口当前点

LineTo: 从窗口当前点到指定点绘制一条直线

当前点:上一次绘图时的最后一点,初始为(0,0)点

  1. PAINTSTRUCT ps = { 0 };
  2. HDC hdc = BeginPaint(hWnd, &ps);
  3. MoveToEx(hdc, 100, 100, NULL);
  4. LineTo(hdc, 300, 300);
  5. EndPaint(hWnd, &ps);

● 封闭图形:能够用画刷填充的图形

Rectangle / Ellipse

  1. Rectangle(hdc, 100,100,300,300);
  2. Ellipse(hdc, 100,100,300,300);