Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Farbe aus einem Pixel bekommen.

  Alt 23. Mär 2011, 19:54
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 Hier im Forum suchenScanline. 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 Delphi-Referenz durchsuchenPixelFormat 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)
$2B or not $2B

Geändert von himitsu (23. Mär 2011 um 19:59 Uhr)
  Mit Zitat antworten Zitat