Entwickler-Ecke

Multimedia / Grafik - TGraphic -> TBitmap - Unschöne Effekte


wulfskin - So 23.03.03 18:51
Titel: TGraphic -> TBitmap - Unschöne Effekte
Hallo!

Ich habe ein leidiges Problem. Ich habe einen Grafikkonverter den ich in ein BitMap umwandlen möchte, damit ich darauf zeichnen kann.
Das umwandeln klappt auch wunderbar, nur leider habe ich manchmal einen unsauberes Bild. Ich weiss das dies mit dem PixelFormat zu tun hat, denn ich habe das schon auf mehreren Seiten gelesen. Leider bekomme ich es trotzdem nicht.
Hier mein Code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure AssignBitmap(var Bitmap: TBitmap;
  const Picture: TPicture);
begin
  Bitmap.PixelFormat := pf24bit;
  Bitmap.Height := Picture.Height;
  Bitmap.Width := Picture.Width;
  Bitmap.Canvas.FillRect(Rect(0, 0, Bitmap.Width, Bitmap.Height));
  Bitmap.Canvas.Draw(0, 0, Picture.Graphic);
  Bitmap.PixelFormat := pf24bit;
end;
Hat jemand irgend eine Idee?

Gruß wulfskin!


Aya - So 23.03.03 20:39

Hi,

also ich seh bei mir absolut keinen unterschied zwischen den Bildern wenn ich sie mit deiner Procedure hin und herschiebe... :)

gib mir mal bitte ein TestBild bei dem ich den unterschied sehe ;)

Au'revoir,
Aya~

PS: Hast du mal Bitmap.Assign(Picture.Graphic); versucht??


wulfskin - So 23.03.03 20:56

@AYA: Ich lade gleich das Bild hoch! Mit Bitmap.Assign bekomme ich kein Unterschied.
Ist echt ein bisschen komisch, den manchmal geht es und manchmal auch net :(!


wulfskin - So 23.03.03 21:42

Hallo Aya!

Habe jetzt festgestellt, dass es doch net an dem PixelFormat liegt (manchmal sieht man den Wald vor lauter Bäumen nicht :().
Es liegt an StretchBlt, mit der ich das Bild auf die PaintBox zeichne, denn mit StretchDraw geht es. Eigentlich könnte ich ja zufrieden sein, aber mich würde trotzdem brennend interessieren, was an dieser StretchBlt-Anweisung falsch ist:

Quelltext
1:
2:
3:
StretchBlt(Canvas.Handle, Pos.x, Pos.y, Size.x, Size.y,
          BitMap.Canvas.Handle, Src.Left, Src.Top, Src.Right, Src.Bottom,
          SRCCOPY);
So und damit du dir vorstellen kannst, wie das Bild dann aussieht, hier die 2 Bilder im Vergleich:
user defined image user defined image

Vielen Dank
wulfskin