如何在WPF应用程序和Windows之间交换D3DImage(用于复制/粘贴)?
我正在我的绘图应用程序上进行复制和粘贴操作。 因此,我需要如何在WPF应用程序和Windows之间交换D3DImage(用于复制/粘贴)?,wpf,interop,bitmap,direct3d,Wpf,Interop,Bitmap,Direct3d,我正在我的绘图应用程序上进行复制和粘贴操作。 因此,我需要 将WPF位图转换为D3DImage(以便以后实现“复制”),以及 将D3DImage转换为WPF位图(用于以后实现“粘贴”) 请注意,这需要WPF应用程序和本机Win-32之间的“互操作” 如何做到这一点,尽可能短(理想情况下有两个功能)?你所说的D3D图像是什么意思 WPF中有一个名为D3DImage的“Control”/Surface,但感觉好像是指位图格式。您正在尝试将数据放在剪贴板上吗?如果是这样,您将不需要互操作。只需使用
- 将WPF位图转换为D3DImage(以便以后实现“复制”),以及
- 将D3DImage转换为WPF位图(用于以后实现“粘贴”)
如何做到这一点,尽可能短(理想情况下有两个功能)?你所说的D3D图像是什么意思
WPF中有一个名为D3DImage的“Control”/Surface,但感觉好像是指位图格式。您正在尝试将数据放在剪贴板上吗?如果是这样,您将不需要互操作。只需使用剪贴板API将图像放在剪贴板上并从剪贴板读取即可。D3DImage是什么意思
WPF中有一个名为D3DImage的“Control”/Surface,但感觉好像是指位图格式。您正在尝试将数据放在剪贴板上吗?如果是这样,您将不需要互操作。只需使用剪贴板API将图像放在剪贴板上并从剪贴板中读取即可。您可能在过去半年中找到了答案,但以下是如何将WPF中的D3DImage转换为BitmapSource(在本例中我使用了vb.net):
你可以在WPFMediaKit中的C#中找到它。你可能在过去的半年里找到了答案,但下面是如何将WPF中的D3DImage转换为位图源代码(在本例中我使用了vb.net):
你可以在WPFMediaKit的C#中找到它。D3DImage是一种外部(非WPF,因此是一个Win-32)图像,打算粘贴(从Paint.NET复制后使用Clipboard.GetImage()),但我无法转换为有效的WPF位图图像(它显示一个黑色矩形)。MSDN文档是:您是否正在复制到正确的缓冲区?你能给我们看一些代码吗?D3DImage是一种外部(非WPF,因此是一个Win-32)图像,打算粘贴(从Paint.NET复制后使用Clipboard.GetImage()),但我无法转换为有效的WPF位图图像(它显示一个黑色矩形)。MSDN文档是:您是否正在复制到正确的缓冲区?你能给我们看一些代码吗?那个本地应用程序也是你的吗?(你能修改它吗?)?(你能修改它吗?)是的,我花了很多次转换尝试/错误来获得功能,但现在我必须再次测试不常见的格式变量(例如不同的dpi)。谢谢。是的,我花了很多次转换来获得功能,但现在我必须再次测试不常见的格式变量(例如不同的dpi)。谢谢
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