Kopieren Kleine Bitmaps auf große Bitmap mit Transparenz Blend: Was ist schneller als Graphics.DrawImage (Small, x, y)?

StackOverflow https://stackoverflow.com/questions/2475233

Frage

habe ich diesen Anruf als Engpass in einer Hochdruckfunktion identifiziert.

graphics.DrawImage(smallBitmap, x , y);

Gibt es einen schnelleren Weg der kleinen, halb transparente Bitmaps in einen größeren halbtransparent ein mischen?

Beispiel Verbrauch:

XY[] locations = GetLocs();
     Bitmap[] bitmaps = GetBmps(); //small images sizes vary approx 30px x 30px

        using (Bitmap large = new Bitmap(500, 500, PixelFormat.Format32bppPArgb))
        using (Graphics largeGraphics = Graphics.FromImage(large))
        {
          for(var i=0; i < largeNumber; i++)
          {
            //this is the bottleneck
            largeGraphics.DrawImage(bitmaps[i], locations[i].x , locations[i].y); 
         }
       }

       var done = new MemoryStream(); 
       large.Save(done, ImageFormat.Png); 
       done.Position = 0;
       return (done);

Die DrawImage Anrufe nehmen Sie eine kleine 32bppPArgb Bitmaps und kopiert sie in eine größere Bitmap an Standorten, und die kleinen Bitmaps variieren können überlappen nur teilweise die größere Bitmaps sichtbaren Bereich. Beide Bilder haben halb transparente Inhalte, die von DrawImage in einer Weise vermischt zu bekommen, die mit dem Ausgang wichtig ist. Ich habe einige Tests mit BitBlt getan, aber nicht signifikant Verbesserung der Geschwindigkeit und der Alpha-Blending kam nicht das gleiche in meinen Tests gesehen. Ich bin offen für fast jede Methode mit einem besseren Ruf BitBlt oder unsicheren c # -Code.

War es hilfreich?

Lösung

Nach einigen Tests ich sehe, dass Dan war richtig (siehe Ausführungen oben). Es ist möglich, zu schlagen GDI Bild Leistung ziehen, wenn Sie nicht brauchen alle das Mischen es Funktionen bietet, aber im Fall der Transparenz-Blends Ich glaube nicht, gibt es Raum für wesentliche Verbesserung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top