windows GDI 获得设备内容和设备内容信息

图形设备接口(Graphics Device Interface或Graphical Device Interface,缩写GDI)。他是windows 的三大核心部件之一。
我们可以把它理解为传送给诸如显示器、打印机之类输出设备的标准。它连接着诸如显示器这种图形输出设备的驱动。

GDI用来完成一些和绘制有关的工作,像直线或曲线的绘制,文字渲染,调色板控制。它不能用来直接绘制一些界面元素,像窗口、菜单等等,这些工作由用户子系统来完成,位于user32.dll中,它是创建在GDI之上的一个软件层。其他系统也有类似GDI的东西,比如Macintosh的Quartz(传统的QuickDraw),和GTK的GDK/Xlib。

GDI最大的好处是它有可以直接访问硬件设备的能力。通过GDI可以非常容易的在不同类型的设备上绘制图形,像显示屏和打印机或类似的显示设备。这些能力是微软Windows系统“所见即所得”程序的核心。
简单的不需要快速图形渲染的游戏可能会用到GDI。但是GDI对一些高级的动画制作无能为力,它缺少显卡中帧的概念,还缺少3D图形硬件光栅化的支持等等。现代的游戏通常使用DirectX和OpenGL而不是GDI,因为这些技术能更好的让程序员利用硬件的特性来加速图形图像的显示。

设备内容

而我们的设备内容(device context,也可以说成设备上下文)。就如名字一样,这个东西存储了一大堆关于怎么“画”的信息。所有的GDI函数都需要接受这个参数。当我们的图形设备(显示器,打印机)要去完成GDI函数的布置的任务时,就会按照设备内容中的信息去做,比如什么颜色啊,文字背景啊。字体啊,映射方式啊。
而我们的操作也就是不停的调用相关函数设置这个设备内容,然后传递给GDI函数。

获得指定窗口的无效区域的设备内容

WINUSERAPI
HDC
WINAPI
BeginPaint(
    _In_ HWND hWnd,
    _Out_ LPPAINTSTRUCT lpPaint);

WINUSERAPI
BOOL
WINAPI
EndPaint(
    _In_ HWND hWnd,
    _In_ CONST PAINTSTRUCT *lpPaint);
//...
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            // TODO: 在此处添加使用 hdc 的任何绘图代码...


            EndPaint(hWnd, &ps);
        }
        break;
//...

设备内容信息

当我们像获得设备内容信息(显示器大小,多少个像素等等)时候可以使用GetDeviceCaps

WINGDIAPI int   WINAPI GetDeviceCaps( _In_opt_ HDC hdc, _In_ int index);

index
可以查看的信息下面链接都都写着
http://write.blog.csdn.net/mdeditor

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值