Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать линию точками [D7, WinXP]


incm ©   (2008-04-21 15:41:00) 

Нужно нарисовать линию состоящую из точек, размером в 1 пиксель.
Ни один из имеющихся  стилей объекта Pen не дает такого.
Есть стиль psUserStyle, но как им пользоваться похоже большей секрет! Гугль находит по слову psUserStyle лишь пару десятков ссылок и то все на "нечеловеческих" языках, типа китайского.


DVM   (2008-04-22 13:51:00) [1]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=94


Anatoly Podgoretsky   (2008-04-22 13:40:00) [2]

А какие претензии, специальная функция, работающая по алгоритму Брезенхама.


{RASkov}   (2008-04-22 13:10:00) [3]

> [9] incm   (22.04.08 12:06)

Это не я предложил, а Анатолий [3]. Из-за [4] я решил напомнить про [3] и делов :)


incm   (2008-04-22 12:06:00) [4]


> По-моему эт пунктир называется


Пунктир это  psDot. Но не то, что мне нужно. psDot - рисует линию черточками.
Вариант который предлжил {RASkov}именно то.


Германн   (2008-04-22 01:23:00) [5]


> AIK ©   (21.04.08 21:09) [7]
>
>

По-моему тоже. Но автор ушёл в спячку.


AIK   (2008-04-21 21:09:00) [6]


> Мне не толщину надо менять, а стить линии!
> Что бы линия рисовалась точками, т.е. один пиксель закрашен,
>  следующий нет и так далее.


По-моему эт пунктир называется


Anatoly Podgoretsky   (2008-04-21 19:40:00) [7]

Зачем что то мудрить, хватит и логической переменной, и будет работать для любых линий, на то он и DDA


{RASkov}   (2008-04-21 18:48:00) [8]

> [4] incm   (21.04.08 18:33)

Тебе линии "ровные" нужны или "под углом"?
В прочем в любом случае [3] тебе поможет...
Просто для ровных линий Callback простой:
procedure DDAProc (X, Y: Integer; Cnv: TCanvas); stdcall;
begin
 if ODD(X) or ODD(Y) then Cnv.Pixels[X,Y]:=clBlack;
end;
Для "угловатых" уже не пойдет....


incm   (2008-04-21 18:33:00) [9]


> Стили объекта Canvas.Pen не отвечают за толщину карандаша,
>  за это отвечает св-во Pen.Width


Мне не толщину надо менять, а стить линии!
Что бы линия рисовалась точками, т.е. один пиксель закрашен, следующий нет и так далее.


Anatoly Podgoretsky   (2008-04-21 16:03:00) [10]

> incm  (21.04.2008 15:41:00)  [0]

LineDDA позволяет осуществить все фантазии.


Игорь Шевченко   (2008-04-21 15:53:00) [11]

тебе надо как у рамки фокуса ?


Сергей М.   (2008-04-21 15:47:00) [12]


> Ни один из имеющихся  стилей объекта Pen не дает такого


Стили объекта Canvas.Pen не отвечают за толщину карандаша, за это отвечает св-во Pen.Width

Цитата из справки:

Specifies the width of the pen in pixels.

Delphi syntax:

property Width: Integer;



Там же имеется пример.


Наверх

Титульная страница Поиск, карта сайта Написать письмо