TBitmap kopieren: CopyRect liefert falsche Ergebnisse
-
Ich habe zwei TImage Objekte und im ersten ein Graustufen-Bitmap (PixelFormat=8Bit). Dieses möchte ich in das andere Bild kopieren. Ich versuche dies mittels CopyRect (gibt es eine bessere Möglichkeit?), doch die Farbanzahl in der Kopie ist wesentlich geringer, wenn ich z.B. im Originalbild 120 Graustufen habe, dann sind in der Kopie nur 20 Graustufen, die Kopie ist pixeliger und halt keine echte Kopie. Woran liegt das, wie kann ich das beheben?
Der Code sieht so aus:
altesBild = new TImage(this); altesBild->Picture->Bitmap->Width = WIDTH; altesBild->Picture->Bitmap->Height = HEIGHT; altesBild->Picture->Bitmap->PixelFormat=Img_Live->Picture->Bitmap->PixelFormat; TRect MyRect; MyRect = Rect(0,0,WIDTH,HEIGHT); altesBild->Canvas->CopyRect(MyRect, Img_Live->Canvas, MyRect);
Und zum Testen habe ich die beiden Bilder gespeichert:
altesBild->Picture->SaveToFile("d:\\bild1.bmp"); Img_Live->Picture->SaveToFile("d:\\bild2.bmp");
In Paint Shop Pro dann beide Bilder geöffnet und sie sehen auf den ersten Blick unterschiedlich aus (die Kopie pixlig), lasse ich die Anzahl Farben/Graustufen zählen, hat die Kopie deutlich weniger.
Danke,
Micha
-
MHX schrieb:
gibt es eine bessere Möglichkeit?
altesBild->Picture->Bitmap->Assign(Img_Live->Picture->Bitmap);
-
Jansen schrieb:
altesBild->Picture->Bitmap->Assign(Img_Live->Picture->Bitmap);
Vielen Dank, das funktioniert prima!