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

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

Как задать толщину линии TPen.Width равную 1 мм?


Страницы:   1 2

Д С ©   (2008-09-21 19:20:00) 

По идее нужно 1 мм умножить <количество точек/мм>. А какое <количество точек/мм> использовать: то, что по-горизонтали или то, что по-вертикали?


Д С   (2008-09-21 22:11:00) [21]

{RASkov} ©   (21.09.08 22:09) [10]
Вот в этом и вопрос собственно: Что использовать GetDeviceCaps(DC, LOGPIXELSX) или GetDeviceCaps(DC, LOGPIXELSY) ?


{RASkov}   (2008-09-21 22:09:00) [22]

> [9] Д С   (21.09.08 21:49)
> Но у меня у самого уже много логики завязано на точках и
> преобразовании вручную

См GetDeviceCaps
ну и пример:
function MmToPixX(DC: HDC; const Xmm: Extended): Integer;
begin
 Result := Round(Xmm / 25.4 * GetDeviceCaps(DC, LOGPIXELSX));
end;


Д С   (2008-09-21 21:49:00) [23]


> guav ©   (21.09.08 21:39) [8]

Это конечно хорошо, что я это узнал сейчас. Но у меня у самого уже много логики завязано на точках и преобразовании вручную.


guav   (2008-09-21 21:39:00) [24]

Преобразования координат через функции SetMapMode, SetViewportExtEx, и т.д.  применяются ко всему - и к толщине Pen и к координатам. Эти преобразования также могут менять направление осей и положение начала координат, так при SetMapMode(Canvas.Handle, MM_LOMETRIC) ось Y смотрит в другую сторону.
 SetMapMode(Canvas.Handle, MM_LOMETRIC);
 Canvas.Pen.Width := 10; // 1 мм.


http://msdn.microsoft.com/en-us/library/ms532673(VS.85).aspx


Anatoly Podgoretsky   (2008-09-21 20:22:00) [25]


> Как вы себе это представляете?

Зачем же спрашивал про горизонталь/вертикаль.


Д С   (2008-09-21 20:08:00) [26]


> guav ©   (21.09.08 19:44) [5]

вопрос не в том... вопрос в том, что писать в TPen.Width ?


guav   (2008-09-21 19:44:00) [27]

> [3] Д С   (21.09.08 19:33)

На всё она влияет. Могут только быть сюрпризы, связанные с тем, что TCanvas не учитывает это свойство HDC.


> [4] Д С   (21.09.08 19:34)

Будет ли пиксель у принтера 600х1200 DPI квадратным ?


Д С   (2008-09-21 19:34:00) [28]


> Anatoly Podgoretsky ©   (21.09.08 19:30) [2]

Как вы себе это представляете?


Д С   (2008-09-21 19:33:00) [29]

Это интересно.
А функция SetMapMode на что еще влияет?
На координаты в MoveTo, LineTo, Rectangle, ... ?


Anatoly Podgoretsky   (2008-09-21 19:30:00) [30]

> Д С  (21.09.2008 19:20:00)  [0]

Оба, поскольку точка может быть не квадратная.


guav   (2008-09-21 19:26:00) [31]

А разрешение по горизонтали и вертикали может быть разное, есть такие принтеры.


> Как задать толщину линии TPen.Width равную 1 мм?

Достаточно SetMapMode MM_LOMETRIC и задать толщину 10.


Страницы:   1 2

Наверх

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