?
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?