Я работаю над выполнением операций копирования и вставки в своем приложении для построения диаграмм. Поэтому мне нужно...
Обратите внимание, что для этого требуется "Взаимодействие" между приложением WPF и собственной Win-32.
Как это сделать, как можно короче (две функции в идеале)?
Ответ 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 буфера обмена, чтобы поместить изображение в буфер обмена и прочитать его из буфера обмена.