Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизКак нарисовать линию с 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c