Hallo!
In meiner Anwendung sind mir einige Bildartefakte aufgefallen. Ich habe festgestellt, dass das Problem darin besteht, dass DrawImage das Bild bei jeder Zeichnung verschlechtert.
Wenn ich ein Bild über ein transparentes Bild zeichne, ändert sich die Pixelfarbe ein wenig. Wenn ich es mehrfach verzeichne, verschlechtert sich die Pixelfarbe weiter.
Im beigefügten Beispiel (verwendet GDIPAPI, GDIPOBJ) sehen Sie, dass die Farbwerte nach einigen Zeichnungen von 29 auf 15 zurückkehren.
Ich habe verschiedene Eigenschaften der Grafik ausprobiert (SetInterpolationMode, SetSmoothingMode, SetPixelOffsetMode, SetCompositingQuality), aber das Ergebnis war das gleiche.
Kennt jemand von euch eine Lösung für dieses Problem?
Vielen Dank im Voraus,
MfG,
Attila
Code:
procedure TForm2.FormCreate(Sender: TObject);
var
bmp, bmporig: TGPBitmap;
gr: TGPGraphics;
Col: Cardinal;
I: Integer;
begin
bmporig := TGPBitmap.Create(1, 1, PixelFormat32bppARGB);
bmporig.SetPixel(0,0, MakeColor(247, 29, 29, 29));
for I := 0 to 15 do
begin
bmp := TGPBitmap.Create(1, 1, PixelFormat32bppARGB);
gr := TGPGraphics.Create(bmp);
Gr.DrawImage(bmporig, 0, 0);
gr.Free;
bmporig.Free;
bmporig := bmp;
end;
bmp.GetPixel(0,0,Col);
Label1.Caption := inttostr(getred(col))+ ' ' + inttostr(getgreen(col)) + ' ' + inttostr(getblue(col)) + ' ' + inttostr(getalpha(col));
end;