Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
Re: Eigene Objekte -> PaintBox
27. Aug 2005, 19:14
ich habs in der lezten woche versucht und wier nicht hinbekommen der code sieht jetzt so aus:
Delphi-Quellcode:
procedure FillPixel(sx,sy,zx,zy:Integer; PaintBox:TPaintBox);
var
x,y:Integer;
begin
{ for x:=sx to zx do begin
for y:=sy to zy do begin
PaintBox.Canvas.Pixels[x,y]:=clBlack;
end;
end;}
x:=sx; y:=sy;
while (x <= zx) or (y <= zy) do begin
inc(x);
inc(y);
PaintBox.Canvas.Pixels[x,y]:=clBlack;
end;
// ShowMessage('OK');
end;
rocedure TForm1.ObenObj(F:TFileName);
var
i,x1,y1,x2,y2,fx,fy,m:Integer;
l:TStringList;
begin
ox:=-1; oy:=-1; m:=0;
if FileExists(f) = True then begin
l:=TStringList.Create;
l.LoadFromFile(f);
fx:=2; fy:=2;
for i:=0 to l.Count-1 do begin
x1:=StrToInt(GetToken(l.Strings[i],':',1));
y1:=StrToInt(GetToken(l.Strings[i],':',2));
SetPixel(x1,y1,paintbox2);
SetPixel(x1*fx,y1*fy,paintbox2);
if i+1 <= l.Count-1 then m:=+1 else m:=0;
if m = +1 then begin
x2:=StrToInt(GetToken(l.Strings[i+m],':',1));
y2:=StrToInt(GetToken(l.Strings[i+m],':',2));
SetPixel(x2*fx,y2*fy,paintbox2);
FillPixel(x1*fx,y1*fy,x2*fx,y2*fy,PaintBox3);
end;
end; // for
end // If
else
ShowMessage('Dateinamen gibt es nicht !');
end;
der code sollte folgendes machen:
Wenn ich die pixle vergrößer ändert sich auch die Pos von den pixel, richtig ?
also der abstant wird größer und fillpixel sollt die lücken füllen. aber genau das passiert nicht er zeichnet ein komische 3D gebilde siehe anhang.
das schwarzte objekt ist das orgnial objekt(verkleinert da gestellt) das ganz rechte ist das neue objekte so sollte es aber nicht aussehen.
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|
|
Zitat
|