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

发布于 2024-11-05 13:22:04 字数 238 浏览 5 评论 0原文

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

  • 将WPF位图转换为D3DImage(以便稍后实现“复制”),以及

  • < p>将 D3DImage 转换为 WPF 位图(以便稍后实现“粘贴”)。

请注意,这需要 WPF 应用程序和本机 Win-32 之间的“互操作”。

如何做到这一点,尽可能短(最好是两个函数)?

I'm being working in making copy and paste operations on my diagramming application.
Therefore, I need to...

  • Convert a WPF Bitmap to a D3DImage (for later implement "Copy"), and

  • Convert a D3DImage to a WPF Bitmap (for later implement "Paste").

Notice that this requieres "Interop" between the WPF Application and the native Win-32.

How to do this, as short as possible (two functions, ideally)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

老街孤人 2024-11-12 13:22:04

您可能在过去的半年中找到了答案,但以下是如何将 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# 中找到它。

You probably found your answer in the past half year but here is how to convert a D3DImage in WPF to BitmapSource (I used vb.net in this case):

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

You can find it in C# in the WPFMediaKit.

我恋#小黄人 2024-11-12 13:22:04

D3DImage 是什么意思?

WPF 中有一个名为 D3DImage 的“控件”/Surface,但感觉好像您指的是位图格式。您是否想将数据放入剪贴板?如果是这样,您将不需要互操作。只需使用剪贴板 API 将图像放入剪贴板并从剪贴板读取图像即可。

What do you mean by D3DImage?

There is a 'Control'/Surface in WPF that is named D3DImage but it feels as if you are referring to a bitmap format. Are you trying to put the data on the clipboard? If so you won't need interop. Just use the Clipboard API to put the image on the clipboard and read it from the clipboard.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文