Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Не могу нарисовать сетку крест на крест.   Найти похожие ветки 

 
Use_R   (2012-11-30 23:15) [0]

Т.е. штриховка по диагонали.
Count - кол-во ячеек.
W, H   - высота и ширина ячейки.

Штриховка в правую сторону выводиться корректно.
В левую криво.

Понять не могу где ошибка.


procedure DrawMesh;
var
 i          : LongWord;
 Count, W, H: LongWord;
begin
 Count:= 200;
 W    := 10;
 H    := 10;

 For i:= 0 to Count do
   MyCanvas.Line(i * W, 0, 0, i * H);

 For i:= 0 to Count do
   MyCanvas.Line(i * W, 0, Count * W, i * H);
end;



 
Sha ©   (2012-11-30 23:24) [1]

должна помочь бумага в клеточку


 
Use_R   (2012-11-30 23:35) [2]

Первый цикл рисует правильно.
Второй цикл, такой же, только конец линии уже справа.

Рисуется какая-то арка!


 
xayam ©   (2012-11-30 23:44) [3]


> Count * W

?


 
xayam ©   (2012-11-30 23:49) [4]

вообще подход какой-то неправильный.
Два цикла вложенных по всем ячейкам и внутри сразу крест рисуется. Не?


 
Use_R   (2012-11-30 23:50) [5]


> xayam ©   (30.11.12 23:44) [3]
>
>
> > Count * W


Это самая правая граница для X.
0 - самая левая граница для Х.


 
DVM ©   (2012-11-30 23:55) [6]


> Use_R   (30.11.12 23:15) 

Не поможет? (На вещественные координаты не смотри)


procedure TECADDiagCrossFillPattern.Paint(Canvas: TECADCanvas; Rect: TECADFloatRect);
var
 X1, Y1: Extended;

 procedure DrawFrom1(X1, Y1, Width, Height: Extended);
 var
   M, D, X2, Y2: Extended;
 begin
   M := Min(Width, Height);
   X2 := X1 + M;
   Y2 := Y1 + M;
   D := Max(0, Max(Y2 - Rect.Bottom, X2 - Rect.Right));
   X2 := X2 - D;
   Y2 := Y2 - D;
   Canvas.DrawLine(X1, Y1, X2, Y2);
 end;

 procedure DrawFrom2(X1, Y1, Width, Height: Extended);
 var
   M, D, X2, Y2: Extended;
 begin
   M := Min(Width, Height);
   X2 := X1 + M;
   Y2 := Y1 - M;
   D := Max(0, Max(Rect.Top - Y2, X2 - Rect.Right));
   X2 := X2 - D;
   Y2 := Y2 + D;
   Canvas.DrawLine(X1, Y1, X2, Y2);
 end;

begin
 X1 := Rect.Left;
 Y1 := Rect.Top;
 while Y1 < Rect.Bottom do begin
   DrawFrom1(X1, Y1, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top);
   Y1 := Y1 + Period;
 end;
 X1 := Rect.Left + Period;
 Y1 := Rect.Top;
 while X1 < Rect.Right do begin
   DrawFrom1(X1, Y1, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top);
   X1 := X1 + Period;
 end;
 X1 := Rect.Left;
 Y1 := Rect.Bottom;
 while Y1 > Rect.Top do begin
   DrawFrom2(X1, Y1, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top);
   Y1 := Y1 - Period;
 end;
 X1 := Rect.Left + Period;
 Y1 := Rect.Bottom;
 while X1 < Rect.Right do begin
   DrawFrom2(X1, Y1, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top);
   X1 := X1 + Period;
 end;
end;



 
Use_R   (2012-12-01 00:17) [7]


> DVM ©   (30.11.12 23:55) [6]


Тормозит аццки.

Вот мой код, закрашивает прямоугольник в косую линию, наклон в право.
Быстро работает.

Такое же, но в левую сторону не могу написать. :)



For i:= 0 to Count do
begin
  Line(i * W, 0,       0,                 i * H);
  Line(i * W, Row * H, Count * W, i * H);
end;



 
DVM ©   (2012-12-01 00:25) [8]


> Use_R   (01.12.12 00:17) [7]


> Тормозит аццки.

Странно, у меня оно не тормозит совсем.


 
antonn ©   (2012-12-01 00:26) [9]

For i:= 0 to Count do
  MyCanvas.Line(0, 0, Count * W, i * H);


 
kilkennycat ©   (2012-12-01 00:37) [10]

Brush.Style := bsDiagCross;


 
DVM ©   (2012-12-01 00:39) [11]


> kilkennycat ©   (01.12.12 00:37) [10]
> Brush.Style := bsDiagCross;

там не регулируется период


 
kilkennycat ©   (2012-12-01 00:53) [12]


> DVM ©   (01.12.12 00:39) [11]

а вдруг он совпадает с требуемым? ;)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.075 c
2-1345387300
Владимир777
2012-08-19 18:41
2013.03.22
FTP-сервер не открывает сокет


15-1350286297
QAZ2
2012-10-15 11:31
2013.03.22
XML - нафига козе боян?


4-1259356501
istok20
2009-11-28 00:15
2013.03.22
OpenProcess и 64bit applications...


3-1250742438
pushkin42
2009-08-20 08:27
2013.03.22
dbExpress не открывает личико...


15-1327513350
alexdn
2012-01-25 21:42
2013.03.22
Сервер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский