GDI和WPF的区别

Windows演示基金会(WPF)API从根本上不同于图形设备接口(GDI)而且GDI +api,要求以不同的方式处理编程的许多方面。本主题简要概述了两个主要领域的主要区别,包括作为渲染器和作为框架的区别。

渲染器

作为一个渲染器,WPF允许你使用:

下表总结了基于gdi和基于wpf渲染之间的差异:

功能 GDI/GDI+ (Windows窗体) WPF
dll使用 System.dll
System.Drawing.dll
System.Windows.Forms.dll
WindowsBase.dll
PresentationCore.dll
PresentationFoundation.dll
窗户 许多窗户 一个窗口
单位 与设备相关的单位(像素) 设备独立单元(1/96英寸)
控制定位 绝对 绝对的,动态的,数据绑定的
图像由 紧密间隔的点行(位图,基于光栅) 数学方程(基于矢量)
渲染引擎 DirectShow的 DirectX (Direct3D)媒体基金会
模式 立即-应用程序重新绘制无效的区域 保留——应用程序保留绘图信息,系统重新绘制
绘画 剪切边界确定,并在那里进行绘制 从后到前进行渲染——组件相互覆盖
钢笔和画笔 当前的钢笔和当前的画笔 适当的钢笔或刷子提供每个绘图调用
绘画区域 最小化要涂漆的区域 不需要最小化
事件 事件 RoutedEvents
视频和音频 需要像Windows Media player这样的播放器 内置支持

窗户

使用GDI/GDI+ API构建的应用程序使用许多窗口,并且驻留在父窗口(MDI)下。WPF中构建的应用程序只有一个窗口。

计量单位

使用GDI/GDI+ API的应用程序使用依赖于设备的单位(像素)作为度量单位。在这些应用中,随着显示设备分辨率的增加,所产生的逻辑图像大小会减小。为WPF构建的应用程序使用与设备无关的单位(1/96英寸)作为度量单位。当设备的DPI为96时,两幅图像是等效的。

控制定位

使用GDI+构建的应用程序使用绝对定位。当父元素调整大小时,子元素不会自动调整大小。为WPF构建的应用程序可以使用绝对定位、动态定位或数据绑定定位。无论是绝对定位还是动态定位,控件都相对于父元素进行定位。

图像的基础上

在GDI/GDI+中创建的图像是基于像素的光栅图像。在WPF中创建的图像可以是可伸缩的矢量图像。

渲染引擎

GDI和GDI+都构建在Win32之上。GDI基于设备上下文(DC)的概念,其中应用程序获得设备上下文的句柄,并使用这些句柄与设备交互。GDI+是GDI的包装器,用于创建c++图形对象。另一方面,WPF是建立在DirectX之上的,这意味着它在执行绘图操作时可以利用硬件加速。

呈现模式

对于GDI和GDI+,渲染使用即时渲染:应用程序重新绘制失效的区域。在WPF中,渲染使用保留渲染:应用程序跟踪绘图信息,而系统执行绘制。

绘画

对于GDI和GDI+,剪切用于确定无效区域的边界,需要进行绘制。在WPF中,从后到前进行喷涂,组件之间相互覆盖。

钢笔和画笔

GDI和GDI+使用电流刷和电流笔的概念。在WPF中,每次绘图调用都必须传递画笔和钢笔。

涂料区域优化

涂装区域优化是GDI或GDI+涂装的重要组成部分。在WPF中,它不被考虑。

事件

GDI和GDI+使用订阅/通知使用事件和事件处理程序委托。相比之下,WPF使用冒泡、隧道和直接事件通知,并且事件在VisualTree

视频和音频

对视频和音频的直接支持不由GDI或GDI+提供,但必须通过像Windows media player这样的媒体播放器获得。WPF直接支持视频和音频MediaElement类

框架

作为一个框架,WPF允许你使用:

LEADTOOLS成像、医疗和文档
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。