Hallo!
Ich komme gerade mit CopyRect nicht zurecht: Ich habe ein Bitmap, 640 x 500 Pixel, und möchte daraus 25 je 128 x 100 Pixel grosse Bereiche in ein anderes Bitmap kopieren.
Also: Kopiere von Image1 den Bereich 0,0,128,100 in Image2 und speichere Image2 als Datei,
dann kopiere von Image1 den Bereich 128,0,256,100 in Image2 und speichere Image2 als Datei,
dann kopiere von Image1 den Bereich 256,0,384,100 in Image2 und speichere Image2 als Datei,
bei waagrecht 5 erhöhe den Zähler für Top um 100, setzt Left wieder auf 0 und beginne erneut,
... mache das waagrecht und senkrecht je 5x.
Ich möchte also ein Bitmap in kleinere Teile aufteilen und jeden dieser Teile als .bmp speichern. Zusammengesetzt sollen sie wieder das Bitmap ergeben.
Alles, was ich erhalte, sind verzerrte oder falsche Bilder...
Mein Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| var i, l, t: Integer; DestRect, SourceRect: TRect; begin l := -128; t := -100; DestRect.Left := 0; DestRect.Top := 0; DestRect.Right := 128; DestRect.Height := 100; SourceRect := DestRect;
for i := 1 to 25 do begin Inc(l, 128);
SourceRect.Left := l; SourceRect.Top := t; SourceRect.Right := l+128; SourceRect.Height := t+100;
Image2.Picture.Bitmap.Canvas.CopyRect(DestRect, Image1.Picture.Bitmap.Canvas, SourceRect);
Image2.Picture.Bitmap.SaveToFile('D:\Delphi XE2\Projects\'+IntToStr(i)+'.bmp');
if i mod 5 = 0 then begin l := -128; t := t+100; end; end; |
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!