问题标签 [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.

0 投票
1 回答
1464 浏览

windows - Direct2D 是否有任何可用的性能测试?

我对绘制基元性能(CAD、GIS 等)特别感兴趣,但与 GDI/GDI+ 的任何速度比较都会非常有趣。

0 投票
6 回答
1080 浏览

c++ - SetLineSpacing() 在 DirectWrite 中不起作用 - 为什么?

我在 Direct2D/DirectWrite 中呈现文本,但调用SetLineSpacing()TextFormat 或 TextLayout 似乎没有效果。有谁知道为什么?

0 投票
2 回答
1903 浏览

wpf - 在 Windows 上绘制叠加图形的最佳方法是什么?

我正在使用需要创建各种自定义窗口类型的 Win32 应用程序。特别是,这些窗口通常是非矩形的,有阴影,或者大部分是透明的。

我目前正在使用WS_EX_LAYEREDwithUpdateLayeredWindow创建透明窗口,然后可以在其上绘制任意图形。但是,我发现分层窗口受到限制,因为您不能有分层的子窗口,分层窗口也不能正确承载“普通”Win32 控件。

我们的代码库已有数年历史,主要使用 Win32 和 GDI,但我们正在对事物进行现代化改造,是时候研究更新的技术了。

我考虑过在 WPF 中进行自定义窗口化,但我担心我所读到的有关“空域”问题的内容。似乎 WPF 使用分层窗口来完成其每像素 alpha 混合,因此它似乎也会受到我以前经历过的限制的影响。

我对 Direct2D 知之甚少(真的一无所知),但该技术听起来可能很有趣。虽然,我找不到任何关于它能够做覆盖窗口的参考。

所以,所有这些都让我想到了我的问题:在 Windows 下做覆盖窗口的最佳技术是什么?(Vista 和 Win7 至少,XP 会很高兴)

我是否忽略了一些特别好的技术?任何建议,将不胜感激。

0 投票
2 回答
3254 浏览

windows-xp - 在 XP 中 Direct2D 回退到 GDI

我想使用 Windows 代码包将 Direct2D 用于我的 .Net 应用程序。由于我的一些用户正在使用 XP,我需要提供 GDI+ 后备。我想知道人们通常如何做这种后备。

他们是否将所有必要的图形功能抽象/接口到一些自定义通用库中?如果是这样,是否有任何用于 direct2d/GDI 的开源库?

谢谢,吉尔。

0 投票
1 回答
1107 浏览

api - 学习 Direct2D

我有一些在 GDI 中创建 Windows 控件的经验,现在我正在寻找好的资源(API、示例和良好实践)来开始学习 Direct2d。

0 投票
1 回答
1257 浏览

c# - Direct2D(C#),如何使用转换矩阵?

我在 C# 中使用 Direct2D,并且在 MSDN(C++ 中)上看到了一些示例,这些示例使用运算符 * 来乘以矩阵(Matrix3x2F)。但是,在 C# 中,不仅 operator* 没有重载,而且没有允许我这样做的方法,所以我不能“累积转换”。我错过了什么吗?有什么帮助方法吗?我试过自己写,但失败了......

0 投票
3 回答
10402 浏览

c++ - 如何将 Direct2D 渲染目标清除为完全透明

我正在尝试在不可见的 HWND 上绘制半透明矩形。但是,清除窗口ID2D1HwndRenderTarget::Clear只会使整个窗口变黑,所以当我在顶部绘制矩形时,它们看起来是半黑色的。

如果我不清除()并且不绘制,那么窗口应该是不可见的。Clear() 是这里的罪魁祸首;但是,如果我不使用它,那么绘画就会非常糟糕。

这是我在 WindowProc 中使用的代码:

提前致谢!

0 投票
2 回答
749 浏览

c++ - Direct2D 窗口在未聚焦时为黑色

我有一个 Direct2D 窗口,它在聚焦时画得很好;但是,当焦点移动到另一个窗口(相同的应用程序或另一个)时,整个窗口都会变黑。我将问题归结为使用ID2D1HwndRenderTarget::Clear. 此功能对我的应用程序至关重要,因为没有它,绘画变得相当……奇怪。

有没有一种方法可以使未聚焦的 Direct2D 窗口正常绘制(注意:WM_PAINT照常调用,如Clear,BeginPaint等都没有错误)

提前致谢。

0 投票
3 回答
4598 浏览

winapi - Win32:是否有使用硬件加速的替代 GDI32.dll?

有没有人创建了一个GDI32.dll利用机器上可用的硬件加速的版本?gdiplus.dll?

从 Windows Vista 开始,GDI 不再是硬件加速的。(GDI+ 从来没有硬件加速)。如果没有 Microsoft 修复 GDI(和 GDI+)以便能够在计算机上正常运行:本机应用程序(C++ MFC、Delphi 等)和托管的 WinForms 应用程序将永远运行不佳。

虽然我可以将 Direct2D 用于商业应用程序,但我无法控制这样一个事实,即开发环境仍然创建控件,具有数十年的库支持代码,假设存在 GDI。


应用程序兼容性:图形设备接口 (GDI)

LineTo 和 Rectangle 等 GDI 原语现在以软件而非视频硬件呈现,这大大简化了显示驱动程序。

视窗和显存

在 XP 中,GDI 的 GPU 加速程度取决于操作系统的配置方式或设备驱动程序(有关详细信息,请参阅Hooking Versus Punting)。在 Vista 中,GDI 不是 GPU 加速的

比较 Direct2D 和 GDI

因此,在 Windows Vista 中,GDI DDI 显示驱动程序被更改为仅由 Microsoft 提供的驱动程序 Canonical Display Driver (CDD) 实现。GDI 呈现到系统内存位图。脏区用于更新窗口管理器用于合成桌面的视频内存纹理。

0 投票
1 回答
980 浏览

c# - 如何为 Direct2D 提供不同的呈现目标?

我在 C# 中使用 Direct2D 为我的研究项目呈现一个小型 gui 框架。我不太习惯在 Windows 或 DirectX 上工作。我正在使用 Windows 窗体控件创建渲染目标,msdn 警告说,由于它使用 BindDC,渲染目标越大,性能越差(当我最大化窗口,我得到大约 15 fps)。

为 Direct2D 创建渲染目标的更好方法是什么?有没有办法创建一个窗口并直接渲染到它,而不是先渲染到控件的缓冲区,然后再渲染它?如果是这样,怎么做?

对不起,如果我的英语很烂,而不是我的母语。