可以使用DirectX在WPF控件上绘制一组点(或者WPF可以使用的东西)。
我需要在WPF中实现一个控制,该控制应绘制16k点,更新速率为30 Hz,现在我的解决方案已经用完了。
这个想法来自this问题中的评论。
非常感谢任何帮助。
答案 0 :(得分:5)
是的,它可以。它通常非常流畅,因为WPF本身就是DirectX的实现。
见MS'Greg Schechter博客:
您还可以在Codeproject的WPF表面上获得D3DImage的示例: http://www.codeproject.com/KB/WPF/D3DImage.aspx
答案 1 :(得分:0)
是的。您使用D3DImage
,纹理(SharpDX
或SlimDX
)和Surface
。您需要在应用程序外部创建纹理,并通过视频驱动程序或其他方式更新其内容。在WPF中,您创建D3DImage
:
Texture = new Texture(Device.DeviceEx, width, height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default, ref handle);
非常重要的是,您的论坛必须为Format.A8R8G8B8
(这是WPF的限制):
using (var surface = texture.GetSurfaceLevel(0))
{
var handle = surface.NativePointer;
Lock();
SetBackBuffer(D3DResourceType.IDirect3DSurface9, handle);
Unlock();
}
每次更新框架后,您只需
Lock();
AddDirtyRect(new Int32Rect(0, 0, PixelWidth, PixelHeight));
Unlock();
最好将D3DImage
放在单独的Dispatcher