Einzelnen Beitrag anzeigen

Benutzerbild von -NIP-
-NIP-

Registriert seit: 6. Jun 2004
Ort: Aachen
254 Beiträge
 
Delphi 7 Personal
 
#1

Tiles Funktion von Photoshop

  Alt 6. Dez 2004, 18:16
Hi!
Ich habe hier mal versucht den Tiles-Filter von Photoshop nachzuahmen:

Delphi-Quellcode:
procedure Vierecke (Quellbild:TBitmap; Zielbild:TBitmap; XAnzahl:Integer;
YAnzahl:Integer; Abweichung:Integer; Hintergrundfarbe:TColor);
var
  Breite,Hoehe,i,i2,AbweichungX,AbweichungY,XRasterPos,
  YRasterPos,HoehePos,BreitePos:Integer;
  EndBild:TBitmap;
begin
  Breite:=Quellbild.Width div XAnzahl;
  Hoehe:=Quellbild.Height div YAnzahl;
    EndBild:=TBitmap.Create;
    EndBild.Canvas.Brush.Color:=Hintergrundfarbe;
    EndBild.Width:=Quellbild.Width;
    EndBild.Height:=Quellbild.Height;
  for i:= 1 to XAnzahl*YAnzahl do
  begin
    AbweichungX:=random(Abweichung*2);
    AbweichungY:=random(Abweichung*2);
    for i2:= 1 to Breite*Hoehe do
    begin
      if i2=1 then
      begin
        BreitePos:=XRasterPos*Breite;
        HoehePos:=YRasterPos*Hoehe;
      end;
      if BreitePos > Breite*XRasterPos then
        BreitePos:=XRasterPos*Breite
      else
      begin
        BreitePos:=BreitePos+1;
        HoehePos:=HoehePos+1;
      end;
      EndBild.Canvas.Pixels[BreitePos-AbweichungX+Abweichung,HoehePos-AbweichungY+Abweichung]:=Quellbild.Canvas.Pixels[BreitePos,HoehePos];
    end;
    if XRasterPos > XAnzahl then
      XRasterPos:=0
    else
      XRasterPos:=XRasterPos+1;

    if YRasterPos > YAnzahl then
      YRasterPos:=0
    else
      YRasterPos:=YRasterPos+1;

Zielbild:=Endbild;

  end;
end;
Aber aus irgendeinem Grund funzt das nicht. Wenn ich das anwende passiert GARNICHTS!
Liegt das an der Art, wie ich das Endprodukt dem Zielbild zuweise?
Wenn ich es compiliere, sagt er, dass der auf Zielbild zugewiesene Wert niemals benutzt wird!?!

Ich hoffe ihr macht euch die Mühe mir zu helfen .

-NIP-
Christian
  Mit Zitat antworten Zitat