Direct3D 和 GDI 互操作性

min_wong 2016-06-29 08:00:25
求NET下GDI+和D3D9之间如何互操作,求个小例子.


Direct2D 的主要功能之一是支持 Direct2D 和其他呈现平台之间的互操作性,以便开发人员能够针对所有需求选择单一平台,从而利用每个平台的特定优势而不必作出妥协。本主题总结了可与 Direct2D 互操作的不同平台。它包含下列部分。


•GDI 互操作性
•GDI+ 互操作性
•Direct3D 互操作性
•DirectWrite 互操作性
•Windows 图像处理组件 (WIC) 互操作性
•相关主题

下图总结了可与 Direct2D 互操作的不同平台,并列出了提供互操作性的一些方法和接口。


此图显示了可与 Direct2D 互操作的平台。


GDI 互操作性

Direct2D 可实现与 GDI 的双向互操作。您可使用 ID2D1DCRenderTarget 将 Direct2D 内容写入 GDI 设备上下文 (DC),也可使用 ID2D1GdiInteropRenderTarget 来获取呈现器目标的 DC 表示。

有关更多信息和示例,请参见 Direct2D 和 GDI 互操作性概述。

GDI+ 互操作性

可将 GDI+ 与 Direct2D 结合使用,方式与 GDI 大致相同。可使用 ID2D1DCRenderTarget 将 Direct2D 内容写入与 GDI+ 内容相同的 DC。通过这种方法,您可以开始将 Direct2D 内容添加到主要使用 GDI+ 进行呈现的应用程序。

还可使用 ID2D1GdiInteropRenderTarget 来提供对使用 Direct2D 进行写入的 GDI DC 的访问,然后使用 FromHDC 方法来创建 Graphics 对象。此方法对于主要使用 Direct2D 进行呈现的应用程序很有用,但具有一个扩展性模型或需要 GDI+ 的呈现能力的其他旧内容。

Direct3D 互操作性

Direct2D 可使用 DXGI 图面呈现器目标(由 CreateDxgiSurfaceRender 方法创建)来写入 IDXGISurface,这样就可将 2D 背景和界面添加到 3D 场景中,并将 Direct2D 内容用作 3D 模型的纹理。Direct2D 还可采用 IDXGISurface 并使用 CreateSharedBitmap 方法来创建位图表示。

有关更多信息和示例,请参见 Direct2D 和 Direct3D 互操作性概述。

DirectWrite 互操作性

Direct2D 设计为可与 DirectWrite 紧密集成。通过提供 DrawText、DrawTextLayout 和 DrawGlyphRun 方法,Direct2D 可轻松呈现 DirectWrite 内容。

Windows 图像处理组件 (WIC) 互操作性

为了处理 WIC 位图,Direct2D 提供了 CreateBitmapFromWicBitmap、CreateSharedBitmap 和 CreateWicBitmapRenderTarget 方法。

另请参见
Direct2D 和 GDI 互操作性概述 Direct2D 和 Direct3D 互操作性概述
...全文
824 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dobzhansky 2016-06-29
  • 打赏
  • 举报
回复
GDI 做出了贡献,需要时间过度
 第一部分 Windows编程基础   第一章 无尽之旅    历史一瞥    设计游戏    游戏类型    集思广益    设计文档和情节图板    使游戏具有趣味性    游戏的构成    常规游戏编程指导    使用工具    从准备到完成一使用编译器    实例:FreakOut    总结   第二章 Windows编程模型    Windows的历史    多任务和多线程    按照Microsoft方式编程:匈牙利符号表示法    世界上最简单的Windows程序    真实的Windows应用程序    Windows类    注册Windows类    创建窗口    事件处理程序    主事件循环    产生一个实时事件循环    打开多个窗口    总结   第三章 高级Windows编程    使用资源    使用菜单编程    图形设备接口GDI介绍    处理重要事件    将消息传递给自己    总结   第四章 WindowsGDI、控件和突发奇想    高级GDI图形    点、线、平面多边形和圆    关于文本和字体    定时的重要性    使用控件    获取信息    T3D游戏控制程序    总结   第二部分 DirectX和2D基础   第五章 DirectX基础和令人生畏的COM    DirectX基础    COM:这是Microsoft的工作,还是魔鬼的?    应用DirectXCOM对象    COM的前景    总结   第六章 首次接触:DirectDraw    DirectDraw界面    创建DirecDraw对象    和Windows协同工作    进入事件模式    巧妙的色彩    创建一个显示画面    总结   第七章 高级DirectDraw和位图图形    真彩色模式下工作    双缓冲    动态画面    页面变换    应用图形变换器    剪切基础    采用位图    备用画面    位图的放旋转和缩放    离散采样理论    色彩效果    人工色彩变换或者查询表    新的DirectX色彩和Gamma控制接口    GDI和DirectX混合使用    获取DirectDraw的真用    在画面上冲浪    使用调色板    在窗口模式下应用DirectDraw    总结   第八章 矢量光栅化及2D变换    绘制线条    线框多边形    2D平面的变换    矩阵引论    变换    缩放    旋转    填充实心多边形    多边形碰撞检测    定时与同步说解    滚动和视角场景    伪3D等角引擎    T3DLIB1库函数    BOB(变换对象)引擎    总结   第九章 用DirectInput和力反馈进行输入    输入循环回顾    DirectInput序曲    力反馈详述    编写通用的输入系统:T3DLIB2CPP    总结   第十章 用DriectSound和DirectMusic演奏乐曲    PC上的声音编程    声音产生的原因    数字与MIDI——发声大,填充少    发声硬件    数字化记录:工具和技术    DirectSound中的麦克风    启动DirectSound    主要与辅助的声音缓冲    播放声音    用DirectSound反馈信息    读取磁盘中数据    DirectMusic:伟大的试验    DirectMusic的结构    启动DirectMusic    加载MIDI段    操作MIDI段    T3DLIB3声音和音乐库    DirectSound API封装    总结   第三部分 编程核心   第十一章 算法、数据结构、内存管理及多线程    数据结构    算法分析    递归    树结构    优化理论    制作演示程序    保存游戏的策略    实现多人游戏    多线程编程技术    总结   第十二章 人工智能在游戏中的运用    人工智能入门    明确AI算法    模式和基础控制脚本    行为状态系统建模    应用软件对存储和学习建模    计划和决策树    导航    高级AI脚本    人工神经网络    遗传算法    模糊逻辑    在游戏中创建真正的AI    小结   第十三章 基本物理建模    物理学基本定律    线性动量的物理性质:守恒和传递    万有引力效果模型    磨擦力    基本的特殊碰撞响应(高级)    解决n-t坐标系统    简单运动学    微粒系统    游戏关键:创建游戏的物理模型    总结
那么通过这一个课程的介绍,首先我们就能够去了解到,Windows Server 2022 的系统当中,路由和远程访问服务,分别地为我们提供了路由和远程访问的功能,然后我们将详细地为大家去说明,路由和远程访问服务的应用场景、组件和特点,并且逐步地完成路由、NAT、RIP 路由组件的安装和配置,实现不同网络之间的通信能力,并且配置虚拟专用网、网络策略服务、以及 DirectAccess 服务,从而实现点对点的手动拔入,以及自动连接的远程访问,确保用户在任何的地方,只要能够接入到 Internet,就能够轻松地接入到公司的内部网络,访问公司网络资源,我们还将去配置远程访问服务的负载平衡,实现远程访问服务的高可用性第二章:介绍 Windows Server 2022 当中,远程访问功能的应用场景和特点,并且介绍课程的演示环境第三章:介绍 Windows Server 2022 当中,路由功能的应用场景和特点,并且完成路由功能的安装和配置,确保不同子网之间的通信第四章:介绍 Windows Server 2022 当中,RIP 和 NAT 路由协议,保障路由之间的相互学习,以及地址转换功能的配置第五章:介绍 Windows Server 2022 当中,不同类型的虚拟专用网服务的配置,理解不同类型虚拟专用网服务的特点第六章:介绍 Windows Server 2022 当中,多台不同虚拟专用网服务器的应用场景当中,网络策略服务的作用,并且完成网络策略服务器的安装和初始化配置第七章:介绍 DirectAccess 的特点,并且完成 DirectAccess 不同组件的安装和配置,完成 DirectAccess 连接的配置
Light Gui的新特性。 1图层和绘图: 支持多图层,使用与有多图层支持的处理器平台。 支持多图层的软件模拟,支持图层的alpha合并和滑动。 同时支持多种颜色格式的图层,如ragb8888模式、rgb565模式、256色调色板模式。 对每个图层,支持双缓存(double buffer)模式,内部进行了窗口剪切优化。 也支持直画(direct draw)模式,支持内存设备,两者可以配合使用。 支持图层和窗口之前的映射,支持一组窗口动态切换显示到不同大小、不同颜色格式的图层。 支持窗口旋转90度、180度、270度,无需硬件支持。 2风格支持: 支持css风格配置,代码中设置控件的类名,就可以和css配置配合使用。 支持css配置控件不同状态的背景属性,如图片、填充色;前景属性,如图片、颜色;字体属性,如大小、颜色;边框属性,如宽度、颜色、调色板位图、补白等。 支持css配置窗口的一些基本属性,如高宽,透明等。 支持皮肤特性,皮肤的属性包括图标、css配置和调色板位图。 支持多种皮肤,支持在线切换皮肤。 3window模拟器支持: 支持完整的window模拟器,使用visual studio 2005,可以独立于设备,在window环境编写界面代码。 全部由C代码编写,自带基本的C函数库,数学函数库,可以在window,嵌入式设备间无缝移植。 模拟器带来良好的调试特性,界面的相关bug,可以方便的在模拟器上调试,极大的加快软件的开发进度。 支持内存调试模式,可以方便的追踪内存越界,泄漏等问题。 4xml支持: 自带xml解释器,配置文件都使用xml编写,有很好的可读性。 实现了基于xml配置文件的多国语言支持,支持在线切换语言。 5简明易用的控件: 自带多种基本的控件,包括静态文本框、按钮、单行和多行编辑框、列表框、进度条、滚动条、图片、等等。 支持自定义控件,控件代码清晰、简明、容易编写。支持组合控件、对话框控件。配合皮肤配置,能快速实现美工效果和风格。 支持一些较复杂的控件,如文本控件、html显示、软件盘等 6良好的应用移植性 自带基本的C函数库,数学函数库等,可以方便的移植程序库和应用程序。 Light Gui的弱点: 实时性能不是Light GUI强项,不建议使用在实时性要就很高的环境。 在使用风格属性的情况下需要有系统盘的支持,用于存放配置文件和资源。 Light Gui目前是一个图形开发包,没有跨任务的窗口管理系统。 目前只有ucos(增强型,支持系统盘),linux,window平台的移植版本。 Light Gui使用的场合: 需要使用图形库快速实现自有风格的嵌入式设备,比如消费电子设备的二次开发,UI设计。 需要使用Light Gui特性的window程序设计。 Light Gui的商业模式: Light Gui是商业收费软件。 提供软件定制服务。 提供自主设计所需的源代码和库。 Light Gui 的其他特性 Light Gui 主要针对嵌入式操作系统,如嵌入式linux, uC/OS-II 等提供支持。在这些 OS 上,Light Gui 支持以多线程模式运行。其主要技术特性描述如下。 1) 硬件适配性: 可支持各种 32 位处理器架构,如 ARM、MIPS、PowerPC、Blackfin等。 支持各种灰度,彩色显示设备。 可支持各种输入设备,键盘(Keypad)、触摸屏、遥控器等等。 2) 资源消耗: Light GUI 的静态存储随配置选项的不同而不同,最少需占用 800K 静态存储空间。 Light GUI 启动后,初始占用动态存储空间最小为128k。建议系统内存为 2MB 以上。 3) 操作系统适配性: 目前支持uC/OS-II 等操作系统,也可以运行在 Linux/uClinux 操作系统之上,Light GUI自带基础的c函数库,可以方便的移植到支持frambuffer的设备上。 针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。 4) 窗口子系统特性: 完备的任务内窗口机制和消息传递机制。 5) 图形子系统特性: 提供有增强 GDI 函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等函数。 在提供有兼容于 C99 规范的数学库平台上,还提供有高级二维绘图函数。 通过 Light GUI 的图形抽象层及图形引擎技术,我们也可以让上述高级 GDI 接口在低端显示屏上实现。 各种流行图像文件的支持,包括 Windows BMP、GIF、JPEG、PNG 等(JPEG
什么是SKINSE SkinSE是一款真正意义上适合软件界面开发的C++界面库。采用XML管理GDI资源(如:图片、字体、颜色等),最大程度将界面与逻辑分开,让程序员有更多的时间去进行软件内部的逻辑处理。SKINSE扩展了非常丰富的API接口,兼容其他界面控件,使界面开发更加灵活、高效。SkinSE只用到了windows几个底层的核心库,没有用到(MFC/ATL等第三方库),采用纯API编写,采用C语言导出方式,增强可移植性,可以用于多种计算机语言。 SKINSE高级特性 1.SKINSE内部没有完全采用HOOK拦截窗口的机制,主要采用子类化控件,修改窗口过程函数的方式进行换肤。但是内置HOOK,可以动态设置HOOK,保证了SKINSE在整理构架上的灵活性。 2.SKINSE内置DirectUI绘制思想,将界面绘制元素抽象成图片、文本、矩形区域、线条、动画,并且内置EventItem、DrawItem绘制机制。可以将这些绘制元素以及绘制机制组合开发,实现按钮、单选框、复选框、分组框、Tab控件、动画控件等界面控件。 3.SKINSE提供了非常丰富的API接口,最大限度的让SKINSE界面库更加透明化、个性化,让SKINSE界面库的使用范围得到最大延伸。 4.SKINSE在子类化进行控件换肤的时候,尽量不修改控件的默认属性,最大程度地兼容window标准控件的默认属性。比如,目前市场上很多界面库在绘制窗口标题栏的时候,去掉了窗口的WS_CAPTION属性, 导致GetClientRect、GetWindowRect方法失效,从而加大了界面开发和设计的难度,当然也导致不能完美支持SDI/MDI等界面框架。 5.SKINSE提供了界面控件动态布局的特性。省去了程序开发中最为繁琐的窗口控件位置的调整。只需要调整一下XML配置属性,就可以进行完美布局。 6.SKINSE支持BMP、ICO、PNG、JPG等图片格式,支持皮肤色调变换,提供SKINSE内部的图像引擎接口。 7.SKINSE支持SDI、MDI等界面框架,支持20余种界面控件,完整兼容window 2000、window2003、window XP、vista、window7当前的主流操作系统。并且支持window平台的多种计算机语言开发。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧