Знающий
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений (для 331 пользователей)
|
Ответ: Ошибка синтаксиса.
Вообще не нужны никакие брезенхамы имхо. Толстая линия - это всего лишь много тонких линий и не более )) Вот прям щаз на коленке накатал. Если не задавать гигантскую ширину, вполне может прокатить ))) Писалось за 5 мин, поэтому если сильно накосячил прошу не пинать больно.

program NewProject2;
//
// Simle draw lines with width demo program. (c) Tronix, 2010.
//
Var
gw,gh : integer; // screen width and height
xx1,xx2,
yy1,yy2 : integer; // random coordinates for line
width : integer; // line width
// Very simple procedure for drawing lines with any width
// x1,y2,x2,y2 - screen coordinates
// d - line width
Procedure BigLine(x1,y1,x2,y2,d: integer);
Var i, swap : integer;
Begin
If x1 = x2 then // vertical line
Begin
For i := d div 2 - d to d div 2 do DrawLine(x1+i,y1,x2+i,y2);
End
else
If y1 = y2 then // horizontal line
Begin
For i := d div 2 - d to d div 2 do DrawLine(x1,y1+i,x2,y2+i);
End
else
Begin
DrawLine(x1,y1,x2,y2); // draw sinle line
If d > 1 then // if width > 1 then draw left and right lines
Begin
If x1 > x2 then // sorting coordinates if needed
Begin
swap := x2;
x2 := x1;
x1 := swap;
swap := y2;
y2 := y1;
y1 := swap;
End;
If (x1 < x2) and (y1 < y2) then // detect line direction
Begin // left-to-right line
For i := 1 to d div 2 do
Begin
DrawLine(x1,y1+i,x2-i,y2); //left side
DrawLine(x1+i,y1,x2,y2-i); //right side
End
End
else // righ-to-left line
Begin
For i := 1 to d div 2 do
Begin
DrawLine(x1+i,y1,x2,y2+i); // left side
DrawLine(x1,y1-i,x2-i,y2); // right side
End
End;
End;
End; //if
End;
begin
Randomize;
gw := GetWidth;
gh := GetHeight;
SetColor(0,0,0);
FillRect(0,0,gw,gh); // clear screen. black
repeat
xx1 := Random(gw);
yy1 := Random(gh); // random line coordinates
xx2 := Random(gw);
yy2 := Random(gh);
width := Random(10)+1; // line width >= 1
SetColor(Random(255),Random(255),Random(255)); // random color for line
bigLine(xx1,yy1,xx2,yy2,width); // DRAW it Now :)))
SetColor(255,255,255); // white color for debug msg
DrawText('X1= '+xx1+' Y1= '+yy1,0,0);
DrawText('X2= '+xx2+' Y2= '+yy2,0,10);
DrawText('W= '+width,0,20); // draw debug information
repaint;
repeat delay (10) until getkeyclicked <> KE_NONE; // waiting for any key
SetColor(0,0,0); // clear screen
FillRect(0,0,gw,gh);
repaint;
until GetKeyPressed = KE_STAR; // exit if 'star' key will be pressed
end.
Последний раз редактировалось Tronix, 23.01.2010 в 16:36.
|