windows程序编程(4):GDI编程

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 21:20   57   0

GDI编程

GDI:Graphics Devices Interfacce

GDI是显示设备与实际物理设备之间的桥梁,无需关心设备具体细节

就是一些与绘图相关的函数和一些数据结构和宏等组成的一个整体,它的作用就是实现了一对通用的图形对象,向屏幕、内存、打印机等设备进行绘图操作

设备环境

有很多别名:设备上下文,设备DC,(Device Context)简单的说就是程序中可以绘图的地方。

GDI的几个区域

屏幕区、窗口区、客户区


如何在DC上绘图:

1、获得设备DC;

2、在DC上绘图

有两种方式分别如下:

//窗口绘制以及重绘case WM_PAINT:中,我们在此进行任意绘图的绘制
    PAINTSTRUCT ps; //结构体
    
    case WM_PAINT:
        hdc = BeginPaint(hwnd,&ps);//进行一些初始化的操作,返回DC句柄
        HPEN pen = CreatePen(PS_SOLID,3,RGB(255,0,0));//创建一个新的自定义颜色的画笔,如果不创建的话,就会使用系统默认的黑色画笔
  HPEN holdpen = (HPEN)SelectObject(hdc,pen);//返回一个旧画笔
        tagPOINT pt;
        MoveTOEx(hdc,0,0,&pt);
        Lineo(hdc,100,100)
        SelectObject(hdc,holdpen);//将画笔选到dc句柄中
  
        EndPaint(hWnd,&ps);//结束操作
        DeleteObject(pen);//由create创建的东西需要delete掉
g_hWnd = NULL;//全局变量

//在hWnd = CreateWindow();后面添加

g_hWnd = hWnd ;

HDC hDc = GetDc(g_hWnd);//客户区的DC
HDC hDcWnd = GetWindowDC(g_hWnd); //窗口的DC

//HBRUSH brush = CreateSolidBrush(RGB(255,0,0));//获得一个红色的画刷
HBRUSH brush = (HBRUSH)GetStockObject(NULL_BRUSH);//获得一个透明画刷
SelectObject(hDc,brush);
Rectangle(hDc,0,0,50,50); //画一个矩形

ReleaseDC(g_hWnd,hDc);//释放句柄,如果不释放的话,别的函数就无法使用这个dc

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP