Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Как нарисовать линию с Pen.Style = psDash и Pen.Width > 1?   Найти похожие ветки 

 
romeo ©   (2004-01-11 12:55) [0]

Сабж


 
имя   (2004-01-11 13:09) [1]

Удалено модератором


 
romeo ©   (2004-01-11 13:14) [2]

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Pen.Width := 3;
Canvas.Pen.Style := psDash;
Canvas.LineTo(200, 200);
end;


рисуется сплошная толстая линия


 
имя   (2004-01-11 13:26) [3]

Удалено модератором


 
romeo ©   (2004-01-11 13:36) [4]


> И вапше рисавать с помащью Pan нельзя - эта ТОРМОЗЗЗЗ....

Тормоз в сравнении с чем?


 
Юрий Федоров ©   (2004-01-11 13:44) [5]

почитай про геометрическое перо, оно умеет
функция ExtCreatePen


 
romeo ©   (2004-01-11 14:17) [6]


> Юрий Федоров © (11.01.04 13:44) [5]
> почитай про геометрическое перо, оно умеет
> функция ExtCreatePen

Э-э... Моего таланта хватило только на следующее:

procedure TForm1.FormPaint(Sender: TObject);
var
hP, OldPen: hPen;
lB: TLogBrush;
begin
lB.lbColor := clRed;
lB.lbStyle := BS_SOLID;
hP := ExtCreatePen(PS_GEOMETRIC or PS_DASH, 3, lB, 0, NIL);
OldPen := SelectObject(Canvas.Handle, hP);
try
LineTo(Canvas.Handle, 300, 300);
finally
SelectObject(Canvas.Handle, OldPen);
DeleteObject(hP);
end;
end;


Опять получил сплошную толстую линию... Где грабли?
Заранее спасибо.


 
имя   (2004-01-11 14:50) [7]

Удалено модератором


 
romeo ©   (2004-01-11 16:26) [8]

Может Винды разные? Странно, в справке по этой функции сказано про ограничения только для Win95, а у меня - Win98!


 
IceDog   (2004-01-15 04:13) [9]

Не мучайся. Не получится. И операционка тут ни причем.
Просто данный тип линии Canvas.Pen.Width не поддерживает более 1.
Можно ставить только 0 или 1. :((


 
IceDog   (2004-01-15 04:20) [10]

Извиняюсь, не совсем точно изложил мысль.
Читать так:
" ..Просто данный тип линии - psDash не поддерживает более 1
т.е. Canvas.Pen.Width должен быть 0 или 1
При 2 и более всегда будет сплошная линия"


 
Babay ©   (2004-01-15 05:39) [11]

Можно попробовать рисовать самостоятельно паралельно несколько линий например так

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Pen.Width := 1;
Canvas.Pen.Style := psDash;
Canvas.LineTo(200, 200);
Canvas.MoveTo(0,1);
Canvas.LineTo(200, 201);
Canvas.MoveTo(0,2);
Canvas.LineTo(200, 202);
end;

Муторно конечно но зато нужный фифект... :=)#


 
Zergling ©   (2004-01-15 06:02) [12]

Насколько я вкурсе, все эти стили пунктирных линий и стили штриховых заливок - это аппаратная приблуда и зависит от железа. Поэтому на разных PC одна и таже пунктирная линия может выглядеть поразному.


 
IceDog   (2004-01-16 03:41) [13]

То Babay,

Ты предлагаешь перо равное 1, а он хочет иметь его 3.
Так что это не подойдет.

То Zergling,

Может ты и прав, но что-то сумнительно.
Разве что от типа трубки монитора. Например, тринитроновские трубки
дают искажение, если чертить в AutoCad,е. То есть, вертикалные линии и
горизонтальные отличаются по толщине, даже на глаз. Это зависит от
конструкции трубки.

Мне кажется, но может я и не прав, что при толщине пера равном 3
концы пунктиров скругляются и поэтому промежутки между
пунктирами сливаются в одну линию.
Например, это хорошо виднов в Paint,е когда устнавливаешь большую
толщину линии. Увеличив ее сразу это видно.


 
romeo ©   (2004-01-18 13:56) [14]

Тут господами модераторами были удалены сообщения одного перца - видимо много о себе думал (да и с русским у него были проблемы :-)) НО! Он взял и попробовал у себя кусочек кода [6], и сообщил, что у него нарисовалась жирная красная пуктирная линия.
Так что IceDog [9, 10] не совсем прав. Да и Юрий Федоров, думаю, знает, что говорит...

В общем плюнул я на это и скачал себе GDI+.


 
Zergling ©   (2004-01-19 06:26) [15]

IceDog (16.01.04 03:41) [13]

Источник информации Фень Юань "Программирование графики в Windows"



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

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
9-93319
Dead Moroz
2003-07-01 03:42
2004.01.29
Движок для текстового 3D_Shooter-а


9-93326
Makep
2003-07-11 00:08
2004.01.29
Странные ошибки!!! =(( DirectX


14-93690
Ig
2004-01-09 01:33
2004.01.29
В чем заключается регистрация на сайте?


14-93648
barbi
2004-01-08 14:53
2004.01.29
Системы аудита


1-93515
Looo
2004-01-18 20:00
2004.01.29
Повторяющиеся действия