Показать сообщение отдельно
Старый 23.01.2010, 01:08   #17
Tronix
Знающий
 
Регистрация: 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,dinteger);
Var 
iswap integer;
Begin
    
If x1 x2 then             // vertical line
        
Begin
            
For := 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 := 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 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 y2then     // detect line direction
                        
Begin                                                         // left-to-right line
                            
For := 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 := 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 (10until 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
Миниатюры
Нажмите на изображение для увеличения
Название: line.PNG
Просмотров: 902
Размер:	2.2 Кб
ID:	8862  

Последний раз редактировалось Tronix, 23.01.2010 в 16:36.
(Offline)
 
Ответить с цитированием