2017-09-09 5 views
-1

Sorry für mein schlechtes Englisch.GDI + Wie man FPS Tropfen mit PNG Bild beheben?

Derzeit verwende ich diesen Weg.

Wenn ich PNG benutze, wenn ich über 400 * 200 Pixel zeichne, fallen meine FPS die 39 ~ 45.

sondern verwenden BMP-Bild FPS halten halten 60.

Wie ich dieses Problem beheben kann ?.

convert Pixelformat

Ich benutze diese Art und Weise (nicht funktioniert)

img = Image::FromFile(filename); 
bmp = new Bitmap(img->GetWidth(), img->GetHeight(), PixelFormat32bppPARGB); 
Graphics gra(hdc); 
gra.FromImage(bmp); 
gra.DrawImage(img, destX, destY, img->GetWidth(), img->GetHeight()); 
+0

Ihre Initialisierung des Graphics-Objekt ist falsch. Versuchen Sie etwas wie 'Graphics * gra = Graphics :: FromImage (bmp);' Sorry, aber ich bin nicht zu vertraut mit C++ –

Antwort

0

Ich nehme an, dies auf das Pixelformat zurückzuführen ist.

GDI (+) verwendet PixelFormat.Format32bppPArgb intern. Alle anderen Formate werden beim Zeichnen konvertiert. Die Konvertierung verursacht wahrscheinlich Ihr Leistungsproblem.

Also, wenn Sie ein Bild häufig zeichnen möchten, konvertieren Sie es selbst auf Laden statt GDI tun es bei jedem Zeichnen.

EDIT:

Das Pixelformat kann „umgewandelt“ wie folgt aus:

// Load png from disc 
Image png = Image.FromFile("x.png"); 
// Create a Bitmap of same size as png with the right PixelFormat 
Bitmap bmp = new Bitmap(png.Width, png.Height, PixelFormat.Format32bppPArgb); 
// Create a graphics object which draws to the bitmap 
Graphics g = Graphics.FromImage(bmp); 
// Draw the png to the bmp 
g.DrawImageUnscaled(png, 0, 0); 

Beachten Sie, dass Bild, Bitmap und Grafikobjekte IDisposable implementieren und ordnungsgemäß entsorgt werden sollten, wenn nicht mehr erforderlich.

Prost

Thomas

+0

Danke! Ich versuche verschiedene Dinge PixelFormat zu konvertieren. aber es funktioniert überhaupt nicht. Können Sie mir ein Beispiel geben? – HOJ

+0

Entschuldigung. Es funktioniert auch nicht. Und ich verwende WIN32 API. Ihr Beispiel ist nicht für die WIN32-API geeignet. – HOJ

Verwandte Themen