Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как обменять D3DImage между приложением WPF и Windows (для копирования/вставки)?

Автор вопроса: Néstor Sánchez A.Ответов: 2

Я работаю над выполнением операций копирования и вставки в своем приложении для построения диаграмм. Поэтому мне нужно...

  • Преобразуйте растровое изображение WPF в D3DImage (для последующей реализации "Копировать") и

  • Преобразуйте D3DImage в растровое изображение WPF (для последующей реализации "Вставить").

Обратите внимание, что для этого требуется "Взаимодействие" между приложением WPF и собственной Win-32.

Как это сделать, как можно короче (две функции в идеале)?

  • Это родное приложение тоже твое? (Можете ли вы изменить его?) Danny Varod 13.05.2011

wpfinteropbitmapdirect3d

Ответы

Ответ 1 · рейтинг 1 · Gabe Miller

Вы, вероятно, нашли свой ответ за последние полгода, но вот как преобразовать D3DImage в WPF в 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

Вы можете найти его на C# в WPFMediaKit.

Ответ 2 · Emond Erno

Что вы подразумеваете под D3DImage?

В WPF есть элемент управления/поверхность с именем D3DImage, но создается впечатление, что вы имеете в виду формат растрового изображения. Вы пытаетесь поместить данные в буфер обмена? Если это так, вам не понадобится взаимодействие. Просто используйте API буфера обмена, чтобы поместить изображение в буфер обмена и прочитать его из буфера обмена.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы