Entwickler-Ecke

Multimedia / Grafik - 2 Abschnitte einer Bitmap tauschen


Visum - Fr 25.07.03 01:47
Titel: 2 Abschnitte einer Bitmap tauschen
Hi,
ich sitz im moment vor dem Problem, dass ich 2 Abschnitte (beide durch ein Rechteck TRect beschrieben) miteinander vertauschen will. Das ganze bei einer einfachen, farbigen Bitmap.

Jetzt würde ich ja eigentlich sagen, dass das kein Problem ist, aber ich bekomm immer nur fehler zustande, der jedesmal so aussieht, dass er zwar die Bilder tauscht, gleichzeitig aber die Farben vom rest des bildes vertauscht.

Ich arbeite dabei mit canvas.copyrect().

Hat jemand eine Idee, woran das liegen könnte? Oder noch besser eine Lösung?

mfG
v!sum

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
  bitmap1:=tbitmap.Create;
  bitmap1.Height:=groesse;
  bitmap1.Width:=groesse;
  bitmap2:=tbitmap.Create;
  bitmap2.Height:=groesse;
  bitmap2.Width:=groesse;

  rect0:=rect(0,0,groesse,groesse);
  rect1:=rect(markiert*groesse,0,markiert*groesse+groesse,groesse);
  rect2:=rect(markiert*groesse-groesse,0,markiert*groesse,groesse);

  bitmap1.Canvas.CopyRect(rect0,image1.Canvas,rect1); //rechter Teil
  bitmap2.Canvas.CopyRect(rect0,image1.Canvas,rect2); //linker Teil

  image1.Canvas.CopyRect(rect2,bitmap1.canvas,rect0);
  image1.Canvas.CopyRect(rect1,bitmap2.canvas,rect0);

Die Bitmap ist genau "groesse" hoch und vielfache davon breit. Es sollen immer nur Quadrate getauscht werden.

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Eggi - Fr 25.07.03 09:11

Hallo,


ich würde tippen das es sich um ein Problem mit der Farbpalette handelt. Sind die von die verwendeten Bilder Palettenbilder?

Eggi


Visum - Fr 25.07.03 12:09

was meinst du mit palettenbildern (noch nie gehört ;) ).

Das komplette Bild wird aus vielen anderen Bildern zusammengesetzt, dass funktioniert auch. Und die zwei bitmaps zum kopieren müssten eigentlich exakt die selbe farbpalette besitzen, wie das image, weil es sind doch eigentlich alles bitmaps ... (oder nicht)

edit: hab ein bild hochgeladen, wo man den fehler sieht ... bild [http://home.t-online.de/home/320017676436-0001/problem.bmp]