Für die Drehung um 180° habe ich leider noch keine Lösunmg gefunden, die 100%ig funktioniert. Aber ich habe ein weiteres Problem:
Mein Programm war nur die Übrung für etwas größeres
.
Ich scanne mehrere Bilder mit einem Scanner ein und möchte die dann drehen und strecken bzw. stauchen. Ich habe nun den Code an mein bestehendes Programm angepasst und nun funktioniert er nicht mehr.
Ich scanne die Bilder ein und packe Sie alle in eine TObjectList, wobei ich die Liste mit
Bilder.Add(TBitmap.Create); erweitere und die Bilder mit
TBitmap(Bilder.Last).Assign(Image); ablege. Wenn der Scanner fertig ist, werden die der Reihe nach wieder ausgelesen und aus der Liste gelöscht.
Theoretisch müsste das hier doch klappen:
Delphi-Quellcode:
TBitmap(Bilder.Items[0]).Width:=help.Height;
TBitmap(Bilder.Items[0]).Height:=help.Width;
Points[0]:=Point(0,help.Width);
Points[1]:=Point(0,0);
Points[2]:=Point(help.Height,help.Width);
PlgBlt(TBitmap(Bilder.Items[0]).Canvas.Handle, Points,
help.Canvas.Handle, 0, 0,
help.Width, help.Height, 0, 0, 0);
Aber leider bekomme ich nur ein Bild, bei dem sich Höhe und Breite geändert haben. Das ist logisch, weil diese geändert werden. Ich habe die Vermutung, dass PlgBlt nicht (richtig) ausgeführt wird. Bei meinen Versuchen, dieses mittels einer Bool-Variable abzufragen, bekomme ich immer ein positives Ergebnis (=dasselbe wie in meinem Testprogramm, wo es ja klappt).
Was mache ich falsch?