如何在WPF应用程序和Windows之间交换D3DImage(用于复制/粘贴)?

时间:2011-05-06 06:14:03

标签: wpf interop bitmap direct3d

我正在为我的图表应用程序进行复制和粘贴操作。 因此,我需要......

  • 将WPF位图转换为D3DImage(以后实现"复制")和

  • 将D3DImage转换为WPF位图(以便稍后实现"粘贴")。

请注意,这需要" Interop"在WPF应用程序和本机Win-32之间。

如何做到这一点,尽可能短(两个功能,理想情况下)?

2 个答案:

答案 0 :(得分:1)

你可能在过去半年找到了你的答案,但这里是如何将WPF中的D3DImage转换为BitmapSource(在这种情况下我使用的是vb.net):

Public Function GetCurrentImage() As BitmapSource

        Dim width As Integer = D3DImage.PixelWidth
        Dim height As Integer = D3DImage.PixelHeight

        Dim dv As New DrawingVisual()
        Using dc As DrawingContext = dv.RenderOpen()
            dc.DrawImage(D3DImage, New Rect(0, 0, width, height))
        End Using

        Dim rtb As New RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32)
        rtb.Render(dv)

        Return BitmapFrame.Create(rtb)
    End Function

您可以在WPFMediaKit中的C#中找到它。

答案 1 :(得分:0)

D3DImage是什么意思?

WPF中有一个名为D3DImage的'Control'/ Surface,但感觉好像是指位图格式。你想把数据放在剪贴板上吗?如果是这样,你将不需要互操作。只需使用Clipboard API将图像放在剪贴板上并从剪贴板中读取它。