C# 结合 GDI+ 和 OpenGL/DirectX

标签 c# winforms opengl directx gdi+

背景:我目前在我的 C# 项目中使用自定义控件(基本控件只是绘制自定义外观(使用 gdi+?))。这些控件中的大多数都有用于不规则形状等的透明段。

问题:我希望在一组控件上覆盖一个半透明(形状不规则)的面板。目前我将覆盖面板剪辑到所涉及的控件区域。这工作正常,结果看起来不错,但是过程太慢了。

问题:有没有什么方法可以加快渲染过程,方法是混合一点 OpenGL/DirectX 并让视频卡执行所有必要的渲染,而不是依赖相当慢的 CPU ?

最佳答案

据我所知,您不能真正混合使用 GDI+ 和 OpenGL/DX。

如果您的性能变慢并且绝对确定它是 GDI+ 中的瓶颈而不是您的代码中的瓶颈,那么可能放弃 GDI+ 并替换它是有意义的它与 DX/OGL。 (不过,您将不得不编写自己的控件,这将是@$$ 的一大痛点)

或者,对于更简单的方法,尝试 WPF/Silverlight!默认情况下,它是可定制和可换肤的,并且它基于 DX。

关于C# 结合 GDI+ 和 OpenGL/DirectX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271498/

相关文章:

c# - 自托管 Owin 端点中的客户端证书映射身份验证

c++ - 在 C++ 中创建 Windows 窗体应用程序(不带 .NET)

c# - 允许 Windows 窗体 C# 的像素滚动?

vb.net - 默认继承按钮文本

Java/OpenGL : Getting the image of a Canvas as a BufferedImage

iphone - 如何创建自定义页面 curl 核心动画?

c# - 在 hololens 上创建 txt 文件

c# - 我应该使用响应代码、异常(exception)情况还是短信来进行服务响应?

c++ - std::vector 到 GLvoid*?

c# - 当您调用 Dispatcher.Invoke(Action) 时分配给操作的调度程序优先级是多少?