Как преобразовать следующий код C ++ (для получения растрового изображения из буфера обмена и его копирования в форму) в код WPF C #, который также использует API (не встроенные помощники буфера обмена из .NET Framework), чтобы скопировать егов BitmapSource (или Bitmap в этом отношении)?
hdcMem = CreateCompatibleDC(hdc);
if (hdcMem != NULL)
{
if (OpenClipboard(hwnd))
{
hbm = (HBITMAP)
GetClipboardData(uFormat);
SelectObject(hdcMem, hbm);
GetClientRect(hwnd, &rc);
BitBlt(hdc, 0, 0, rc.right, rc.bottom,
hdcMem, 0, 0, SRCCOPY);
CloseClipboard();
}
DeleteDC(hdcMem);
}
Моя реализация в коде WPF C # выглядит следующим образом.Вероятно, ужасно неправильно.Дело в том, что я получаю из этого черное изображение.
IntPtr hdc = CreateCompatibleDC(IntPtr.Zero);
IntPtr hdcMem = CreateCompatibleBitmap(hdc, 64, 64);
if (hdcMem != null)
{
if (OpenClipboard(MainWindow.Handle))
{
IntPtr hbm = GetClipboardData((uint)clipboardFormat);
SelectObject(hdcMem, hbm);
BitBlt(hdc, 0, 0, 64, 64, hdcMem, 0, 0, TernaryRasterOperations.SRCCOPY);
CloseClipboard();
}
DeleteDC(hdcMem);
}