PDA

View Full Version : سوال: در مورد رسم خط



فاطمه_14
دوشنبه 05 اردیبهشت 1390, 15:59 عصر
procedure tform1.line_(x0,y0,x1,y1:integer);
var
e2,y,err,dx,dy,sx,sy:integer;
begin
dx := abs(x1-x0);
dy := abs(y1-y0) ;
form1.Canvas.Pen.Width:=2;
if x0 < x1 then sx := 1 else sx := -1;
if y0 < y1 then sy := 1 else sy := -1;
err := dx-dy;
y:=1;
while (y=1) do begin
form1.Canvas.MoveTo(x0,y0);
form1.Canvas.LineTo(x0,y0);
if (x0 = x1) and (y0 = y1) then exit;
e2 := 2*err;
if e2 > dy then begin
err := err - dy;
x0 := x0 + sx;
end;
if e2 < dx then begin
err := err + dx;
y0 := y0 + sy ;
end;
end;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
line_(400,200,1,1);
end;
end.

سلام
به نظر من
در این برنامه شیب خط را نسبت به y بااستفاده از عملیات تفریق و جمع بدست می آوریم اگه dx بزرگتر از dy باشه یعنی به خط افقی نزدیکتره (خط در این حالت خوابیده تره) اگه dy بزرگتر از dx باشه پس خط ایستاده تره (به خط عمودی نزدیکتره)
وقتی که به خط افقی نزدیکه در این حالت پیکسل های x پشت سر هم و وقتی که به خط عمودی نزدیکه در این حالت پیکسل های y پشت سر هم روشن می شند.

نظر شما چیه؟
خواهش می کنم کمکم کنید

hjran abdpor
چهارشنبه 07 اردیبهشت 1390, 17:14 عصر
دوست عزيز بهتر شما اين سوالو تو انجمن دلفي مطرح كنيد زودتر جواب ميليرد. اما در مورد كد بهتره كد را تو دلفي اجرا كنيد تا ببنيت جي جاب ميشه و بعد برنامه را trace كني.