问题标签 [direct2d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Direct2D 是否有任何可用的性能测试?
我对绘制基元性能(CAD、GIS 等)特别感兴趣,但与 GDI/GDI+ 的任何速度比较都会非常有趣。
c++ - SetLineSpacing() 在 DirectWrite 中不起作用 - 为什么?
我在 Direct2D/DirectWrite 中呈现文本,但调用SetLineSpacing()
TextFormat 或 TextLayout 似乎没有效果。有谁知道为什么?
wpf - 在 Windows 上绘制叠加图形的最佳方法是什么?
我正在使用需要创建各种自定义窗口类型的 Win32 应用程序。特别是,这些窗口通常是非矩形的,有阴影,或者大部分是透明的。
我目前正在使用WS_EX_LAYERED
withUpdateLayeredWindow
创建透明窗口,然后可以在其上绘制任意图形。但是,我发现分层窗口受到限制,因为您不能有分层的子窗口,分层窗口也不能正确承载“普通”Win32 控件。
我们的代码库已有数年历史,主要使用 Win32 和 GDI,但我们正在对事物进行现代化改造,是时候研究更新的技术了。
我考虑过在 WPF 中进行自定义窗口化,但我担心我所读到的有关“空域”问题的内容。似乎 WPF 使用分层窗口来完成其每像素 alpha 混合,因此它似乎也会受到我以前经历过的限制的影响。
我对 Direct2D 知之甚少(真的一无所知),但该技术听起来可能很有趣。虽然,我找不到任何关于它能够做覆盖窗口的参考。
所以,所有这些都让我想到了我的问题:在 Windows 下做覆盖窗口的最佳技术是什么?(Vista 和 Win7 至少,XP 会很高兴)
我是否忽略了一些特别好的技术?任何建议,将不胜感激。
windows-xp - 在 XP 中 Direct2D 回退到 GDI
我想使用 Windows 代码包将 Direct2D 用于我的 .Net 应用程序。由于我的一些用户正在使用 XP,我需要提供 GDI+ 后备。我想知道人们通常如何做这种后备。
他们是否将所有必要的图形功能抽象/接口到一些自定义通用库中?如果是这样,是否有任何用于 direct2d/GDI 的开源库?
谢谢,吉尔。
api - 学习 Direct2D
我有一些在 GDI 中创建 Windows 控件的经验,现在我正在寻找好的资源(API、示例和良好实践)来开始学习 Direct2d。
c# - Direct2D(C#),如何使用转换矩阵?
我在 C# 中使用 Direct2D,并且在 MSDN(C++ 中)上看到了一些示例,这些示例使用运算符 * 来乘以矩阵(Matrix3x2F)。但是,在 C# 中,不仅 operator* 没有重载,而且没有允许我这样做的方法,所以我不能“累积转换”。我错过了什么吗?有什么帮助方法吗?我试过自己写,但失败了......
c++ - 如何将 Direct2D 渲染目标清除为完全透明
我正在尝试在不可见的 HWND 上绘制半透明矩形。但是,清除窗口ID2D1HwndRenderTarget::Clear
只会使整个窗口变黑,所以当我在顶部绘制矩形时,它们看起来是半黑色的。
如果我不清除()并且不绘制,那么窗口应该是不可见的。Clear() 是这里的罪魁祸首;但是,如果我不使用它,那么绘画就会非常糟糕。
这是我在 WindowProc 中使用的代码:
提前致谢!
c++ - Direct2D 窗口在未聚焦时为黑色
我有一个 Direct2D 窗口,它在聚焦时画得很好;但是,当焦点移动到另一个窗口(相同的应用程序或另一个)时,整个窗口都会变黑。我将问题归结为使用ID2D1HwndRenderTarget::Clear
. 此功能对我的应用程序至关重要,因为没有它,绘画变得相当……奇怪。
有没有一种方法可以使未聚焦的 Direct2D 窗口正常绘制(注意:WM_PAINT
照常调用,如Clear
,BeginPaint
等都没有错误)
提前致谢。
winapi - Win32:是否有使用硬件加速的替代 GDI32.dll?
有没有人创建了一个GDI32.dll
利用机器上可用的硬件加速的版本?gdiplus.dll
?
从 Windows Vista 开始,GDI 不再是硬件加速的。(GDI+ 从来没有硬件加速)。如果没有 Microsoft 修复 GDI(和 GDI+)以便能够在计算机上正常运行:本机应用程序(C++ MFC、Delphi 等)和托管的 WinForms 应用程序将永远运行不佳。
虽然我可以将 Direct2D 用于商业应用程序,但我无法控制这样一个事实,即开发环境仍然创建控件,具有数十年的库支持代码,假设存在 GDI。
LineTo 和 Rectangle 等 GDI 原语现在以软件而非视频硬件呈现,这大大简化了显示驱动程序。
在 XP 中,GDI 的 GPU 加速程度取决于操作系统的配置方式或设备驱动程序(有关详细信息,请参阅Hooking Versus Punting)。在 Vista 中,GDI 不是 GPU 加速的
因此,在 Windows Vista 中,GDI DDI 显示驱动程序被更改为仅由 Microsoft 提供的驱动程序 Canonical Display Driver (CDD) 实现。GDI 呈现到系统内存位图。脏区用于更新窗口管理器用于合成桌面的视频内存纹理。
c# - 如何为 Direct2D 提供不同的呈现目标?
我在 C# 中使用 Direct2D 为我的研究项目呈现一个小型 gui 框架。我不太习惯在 Windows 或 DirectX 上工作。我正在使用 Windows 窗体控件创建渲染目标,msdn 警告说,由于它使用 BindDC,渲染目标越大,性能越差(当我最大化窗口,我得到大约 15 fps)。
为 Direct2D 创建渲染目标的更好方法是什么?有没有办法创建一个窗口并直接渲染到它,而不是先渲染到控件的缓冲区,然后再渲染它?如果是这样,怎么做?
对不起,如果我的英语很烂,而不是我的母语。