BitBlt in C# stellt nur schwarzes Bild dar
-
O.k., da GDI+ zu langsam ist, hab ich nun versucht, die Funktion BitBlt aus der WinAPI in C# einzubinden:
using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; static class Program { [STAThread] static void Main() { Application.Run(new MainForm()); } } class MainForm : Form { private Bitmap bitmap = new Bitmap("Test.bmp"); public MainForm() { Paint += new PaintEventHandler(MainForm_Paint); } private void MainForm_Paint(object sender, PaintEventArgs e) { #if false e.Graphics.DrawImage(bitmap, 0, 0); #else using (Graphics srcGraphics = Graphics.FromImage(bitmap)) { IntPtr destHdc = e.Graphics.GetHdc(); IntPtr srcHdc = srcGraphics.GetHdc(); BitBlt(destHdc, 0, 0, bitmap.Width, bitmap.Height, srcHdc, 0, 0, 0x00CC0020); srcGraphics.ReleaseHdc(srcHdc); e.Graphics.ReleaseHdc(destHdc); } #endif } [DllImport("gdi32.dll")] private static extern bool BitBlt (IntPtr hdc, int x, int y, int width, int height, IntPtr srcHdc, int srcX, int srcY, int whatever); }
Während das Graphics.DrawImage funktioniert und das Bild aus der Datei anzeigt, wird mit der BitBlt-Funktion nur ein schwarzes Bild angezeigt. Wisst Ihr, woran das liegt?