首页
社区
课程
招聘
未解决 [求助]GDI 和 GDI+是什么关系?
发表于: 2020-7-28 23:54 2548

未解决 [求助]GDI 和 GDI+是什么关系?

2020-7-28 23:54
2548

1、GDI+是GDI的封装吗?

2、GDI+开源吗?

3、GDI和DirectX 是Windows上两种显示接口,都是直接读取显存?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1805
活跃值: (2060)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2

这种问题问MSDN会比较好。

首先GDI,MSDN: Windows GDI中所述:

The Microsoft Windows graphics device interface (GDI) enables applications to use graphics and formatted text on both the video display and the printer. Windows-based applications do not access the graphics hardware directly. Instead, GDI interacts with device drivers on behalf of applications.

GDI让应用程序可以在视频显示设备和打印机上使用图形和格式化文本。基于Windows的应用程序没有权限直接访问图像设备。GDI接口和设备驱动代为之。

也就是在Windows上与图像设备的桥梁,应用程序都通过GDI访问图像设备,实现图像显示和其它操作。

然后GDI+,MSDN: GDI+中描述和之前GDI类似,顾名思义,是GDI的增强版,并且同时提供了C++基于类的接口和FLAT风格的API。在“What's New In GDI+?”一节中所述如下:

Windows GDI+ is different from Windows Graphics Device Interface (GDI) in a couple of ways. First, GDI+ expands on the features of GDI by providing new capabilities, such as gradient brushes and alpha blending. Second, the programming model has been revised to make graphics programming easier and more flexible.

Windows GDI+与GDI在几个方面有所不同。首先,GDI+提供了新的兼容性,比如渐变画刷和α混合。其次,编程模型经过修订,使编程更简单和灵活。举个栗子,使用GDI函数画斜线或者曲线会有明显锯齿,而GDI+通过颜色混合能实现抗锯齿的效果;再比如GDI可以通过透明画刷实现单色透明,而GDI+通过颜色混合可以画出半透明。

最后DX,MSDN: Getting started with DirectX Graphics,其中所述:

Microsoft DirectX graphics provides a set of APIs that you can use to create games and other high-performance multimedia applications. DirectX graphics includes support for high-performance 2-D and 3-D graphics.

DirectX绘图提供了API集合,你可以用来创建游戏和其它高性能多媒体应用程序,包含高性能2D、3D图像。

当然还包括音频支持。


2020-7-29 13:45
1
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Ratin 这种问题问MSDN会比较好。首先GDI,MSDN: Windows GDI中所述:The Microsoft Windows graphics device interface (GDI) enabl ...
+5 谢谢大哥,那GDI+不是GDI的封装吗?这三个都是直接和硬件打交道吗?
2020-7-29 16:12
0
雪    币: 1805
活跃值: (2060)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
敏而好学 +5 谢谢大哥,那GDI+不是GDI的封装吗?这三个都是直接和硬件打交道吗?
1. MSDN说的很明确了,基于Windows的应用程序没有权限直接访问图像设备。GDI接口和设备驱动代为之。
2. GDI比GDI+更底层,但未必非得形成封装的关系,这个看微软心情了。比如最早在XP下,MessageBoxA->MessageBoxW->MessageBoxExW->MessageBoxTimeoutW这样的夺命连环套娃,到了Win10已经极其简化,封装关系是不定的。GDI+不开源,但你可以参考ReactOS源码。
3. GDI将图像设备抽象成DC,GDI+抽象成画布(好像是这么叫的),隔离物理图像设备。DX不在这个层面。DX做图形图像计算、3D场景、甚至机器学习,与GPU打交道。
我不是研究这个的,以上解释或有误,望指正~
2020-7-29 16:36
1
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Ratin 1. MSDN说的很明确了,基于Windows的应用程序没有权限直接访问图像设备。GDI接口和设备驱动代为之。 2. GDI比GDI+更底层,但未必非得形成封装的关系,这个看微软心情了。比如最早在X ...
谢谢大哥指点。
2020-7-29 16:54
0
游客
登录 | 注册 方可回帖
返回
//