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-