Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
14-93653
saNat
2004-01-08 02:44
2004.01.29
Сети


9-93322
alxx
2003-07-15 12:13
2004.01.29
Точка на отрезке, ближайшая к данной.


1-93450
MakNik
2004-01-16 10:29
2004.01.29
dxDBGrid1


9-93320
Vitas2
2003-07-16 09:46
2004.01.29
glBlendFunc


8-93589
Дмитрий В. Белькевич
2003-09-03 17:48
2004.01.29
Как из TBitmap вытащить plain data





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский