Zitat:
form1.Canvas
Ich hab es nicht umsonst gesagt.
minimiere mal die Form oder schiebe mal kurz eine andere Form über deine Form drüber ... Ergebnis: das Bild ist weg.
Ja, unter Windows 7 kann man Glück haben, daß der Desktop Window Manager eine Kopie der Daten vorhält, aber das ist nicht die Regel und diese Daten/Kopieen können auch schnell mal weg sein.
Zum Bearbeiten intern ein TBitmap und zum Anzeigen dann z.B. ein TImage.
Ja, mit
Scanline. Dazu musst du aber ein TBitmap nutzen.
Und du mußt aufpassen welches Format das Bitmap besitzt, da man direkt auf die internen Daten zugreift, welche sich ja je nach
PixelFormat unterscheidet.
PS:
Delphi-Quellcode:
var
bild1, bild2: TBitmap;
farbe1, farbe2 : record
color : tcolor;
b, g, r : byte;
end;
bild1 := TBitmap.Create;
try
bild2 := TBitmap.Create;
try
// bild1.canvas füllen
// bild2.canvas füllen
for x := ... do
for y := ... do
begin
farbe1.color := bild1.Canvas.Pixel[x, y];
farbe2.color := bild2.Canvas.Pixel[x, y];
// farbe1.r, .b und .g mit farbe2 verrechnen
// Ergebnis in farbe1
bild1.Canvas.Pixel[x, y] := farbe1.color;
end
Image1.Canvas.CopyRect(Image1.ClientRect, bild1.Canvas, Image1.ClientRect);
finally
bild2.Free;
end;
finally
bild1.Free;
end;
und dann läßt es sich immernoch auf ScanLine umstellen.
Zitat:
for y:= -40 to 135 DO
das -40 ist wohl total falsch, denn ein Bitmap hat keine negativen Pixel (sei froh, daß bei dir keine Bereichsprüfung aktiv ist)