head.WriteLine()

Samstag, April 15, 2006

Schnelles Imaging mit PARGB

Wenn Sie eine große Anzahl von Images mit GDI+ auf den Bildschirm bringen, kann es zu Performance-Engpassen kommen, wenn deren Farbtiefe 32 Bit unterschreitet. Der Grund hierfür ist, dass diese zuvor automatisch in das PARGB-Format (pre-multiplied alpha blended RGB) konvertiert werden.

Wenn Sie beispielsweise eine Animation erzeugen, in dem Sie nacheinander mehrere GIF-Bilder auf den Bildschirm bringen, können Sie die Performance optimieren, in dem Sie diese vorher in das PARGB-Format wandeln. Die folgende Methode demonstriert die Vorgehensweise:

private void ConvertImage2PARGB(Image img)
{
    Bitmap bmp = img as Bitmap;
    Bitmap newImg = new Bitmap(bmp.Width, bmp.Height,
    System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
    using (Graphic g = Graphic.FromImage(newImg);
    {
        g.DrawImage(bmp, new Rectangle(0,0,bmp.Width,bmp.Height));
    }
    img = newImg;
}