Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 15:18   #1
ve7er
Новичок
Джуниор
 
Регистрация: 22.03.2009
Сообщений: 1
По умолчанию Пиксели в сантиметры

Здравствуйте.

Нужно печатать рисунки, полученные заданными параметрами. Но печатать нужно в сантиметрах. Как можно перевести пиксели в сантиметры, при этом учесть параметры монитора? Возможно ли такое? Или есть ещё какие-нибудь решения?
ve7er вне форума Ответить с цитированием
Старый 22.03.2009, 15:48   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот так и нужно было назвать тему - "Как можно перевести пиксели в сантиметры, при этом учесть параметры монитора".
Видно, что правила раздела не читали, а зря - можно и схлопотать...


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

Последний раз редактировалось mihali4; 22.03.2009 в 15:53.
mihali4 вне форума Ответить с цитированием
Старый 26.03.2009, 21:37   #3
Niarb
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 38
По умолчанию

уважаемый Михалыч, ничего ручками вводить не надо !!!, не вводите в заблуждение....
есть очень полезная функция как GetDeviceCaps

...перевод миллиметров в пиксели текущей канвы:

Canvas - канва, на которой собираешься рисовать
Value - миллиметры
X, Y - количество пикселей на данной канве

Код:
procedure PixelsPerMM(canvas: TCanvas; value: real; var x, y: integer);
var
   h:HDC;
   hres,vres,hsiz,vsiz:integer;
begin
   h:=canvas.handle;
   hres := GetDeviceCaps(h,HORZRES);
   vres := GetDeviceCaps(h,VERTRES);
   hsiz := GetDeviceCaps(h,HORZSIZE);
   vsiz := GetDeviceCaps(h,VERTSIZE);
   x := round(value*(hres/hsiz));
   y := round(value*(vres/vsiz));
end;
...перевод пикселей в миллиметры текущей канвы

Код:
procedure MMPerPixels(canvas: TCanvas; value: integer; var x, y: real);
var
   h:HDC;
   hres,vres,hsiz,vsiz:integer;
begin
   h:=canvas.handle;
   hres := GetDeviceCaps(h,HORZRES);
   vres := GetDeviceCaps(h,VERTRES);
   hsiz := GetDeviceCaps(h,HORZSIZE);
   vsiz := GetDeviceCaps(h,VERTSIZE);
   x := (value/(hres/hsiz));
   y := (value/(vres/vsiz));
end;
Чем меньше вы знаете, тем больше я ценен как специалист...

Последний раз редактировалось Niarb; 26.03.2009 в 22:31.
Niarb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дюймы в сантиметры и наоборот. С++ Salamandra Помощь студентам 5 04.01.2010 22:39
Перевод координат городов в пиксели dubin Помощь студентам 5 19.10.2008 18:03
Пиксели в Image Witaliy Общие вопросы Delphi 2 05.05.2008 19:16