Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Правильный превью   Найти похожие ветки 

 
Бормодед   (2006-05-03 14:27) [0]

В общем, как идеологически правильно нужно делать превью? Ну т.е. чтобы то, что пользователь видит в превью, гарантировано совпадало с тем, что пользователь увидит на бумаге, нажав Print. Причем надо иметь возможность динамически масштабировать и таскать мышкой изображение в превью.
 Первое, что пришло в голову - CreateCompatibeBitmap размерами с канву принтера. Рисуем на этом битмапе что нам нужно. В окно превью при динамическом масштабированиии постоянно делаем StretchBlt с этого битмапа. При нажатии на Print  - просто рисуем этот битмап на DC принтера. Все работает, все совпадает, но меня пугают размеры отжираемой при создании такого битмапа памяти.
 Или же... Во время превью динамически рисовать в нужном масштабе на битмапе размером с окно превью (или меньше). Ну и при печате - тоже рисовать отдельно на DC принтера. Но тут тогда возникает опасение, что могут быть "несовпадушки"...
 Или все не правильно и надо как-то по-другому?


 
Котик Б   (2006-05-03 16:03) [1]

... чтобы сделать правильный превью нужно добиться того чтобы програмке было пофиг на каком dc рисовать картинку

>просто рисуем этот битмап на DC принтера

бред - а вы вкурсе сколько этот битмап на принтер будеит передаваться ???
и если передасться вообще из-за нехватки локальной памяти

... а если в системе установлено к примеру лазерник 600dpi, струйник 4800dpi и плоттер вообще без dpi :) то как тогда ???


 
Бормодед   (2006-05-03 16:37) [2]


> ... чтобы сделать правильный превью нужно добиться того
> чтобы програмке было пофиг на каком dc рисовать картинку


программке-то как раз пофиг...


> бред - а вы вкурсе сколько этот битмап на принтер будеит
> передаваться ???
> и если передасться вообще из-за нехватки локальной памяти
>
> ... а если в системе установлено к примеру лазерник 600dpi,
>  струйник 4800dpi и плоттер вообще без dpi :) то как тогда
> ???


Ну, я, вроде, и высказал сразу опасения по этому поводу... Т.е., если пропустить мимо ушей ваш сарказм, предлагаете второй вариант?


 
REA   (2006-05-03 16:38) [3]

Метафайл можно


 
Бормодед   (2006-05-03 16:42) [4]


> Метафайл можно


Не... C него-то и начинал... Вобщем, в 98-х виндах он как-то странно себя вел, особенно с текстом.


 
REA   (2006-05-03 16:45) [5]

>Вобщем, в 98-х виндах он как-то странно себя вел, особенно с текстом.

Нормально он вроде себя ведет. А в чем странность?


 
Бормодед   (2006-05-03 17:08) [6]

Уже точно не помню. Я пробовал им пользоваться довольно давно и не в этом проекте. Короче, результаты не удовлетворили, и про WMF с тех пор и не вспоминаю. Если предположить, что он работает верно, то, видимо, надо считать, что вы за первый вариант, только с использованием метафайла вместо битмапа в качестве "буфера". И этот метафайл рисовать и в превью и на принтер посылать?


 
Котик Б   (2006-05-03 17:50) [7]

Именно !!! Второй вариант !
Рисовать не привязываясь к пикселам, а скорее к масштабу изображения, и уже в зависимости от размеров холста пересчитывать все координаты.

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

Как пример:
задан прямоугольник размером 200х100 мм и с толщиной контура в 1 пиксел
то размеры прямоугольника должны быть пересчитаны и для монитора с 96 dpi и для лазерника с 600 dpi - но толщина линии должна быть 1 !!!

Главное чтобы небыло несовпадений пропорций :)


 
REA   (2006-05-03 17:54) [8]

Больше всего конечно проблем со шрифтами - они в MM_TEXT корректно не масштабируются, а в других режимах не поймешь что написано.
В остальном примерно как в [7]
А насчет толщины линии тоже спорный вопрос - если WYSIWYG, то толщину тоже надо масштабировать, хоть и на экране меньше пиксела не нарисовать.


 
Бормодед ©   (2006-05-03 18:20) [9]


> Как пример:
> задан прямоугольник размером 200х100 мм и с толщиной контура
> в 1 пиксел
> то размеры прямоугольника должны быть пересчитаны и для
> монитора с 96 dpi и для лазерника с 600 dpi - но толщина
> линии должна быть 1 !!!


Не верно. Линию в 1 пиксел на лазернике с 600 dpi будет просто не видно.


 
Anatoly Podgoretsky ©   (2006-05-03 19:53) [10]

Котик Б   (03.05.06 16:03) [1]
Да не много до 3 гб


 
Anatoly Podgoretsky ©   (2006-05-03 19:55) [11]

Нмного ошибся до 8 гб


 
Ling ©   (2006-05-04 13:20) [12]

А ты подумай хорошенько, так ли сильно тебе нужно самому всё рисовать и печатать. Лучше всего работает вариант - скидываем всё красиво оформив в офисную прогу, аля Word, Excell, Corel, и пусть там сами разбираются, как, куда и что печатать, а заодно и сохранить результаты могут.


 
Бормодед ©   (2006-05-04 14:52) [13]

Воспримем предыдущий пост как шутку :)


 
Algol   (2006-05-04 18:55) [14]

Кстати от WMF (точнее EMF) ты рано отказался. Практика показывает что это как раз оптимальный вариант.



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
15-1147361198
AlexanderMS
2006-05-11 19:26
2006.06.11
Эх, глюки


3-1145287275
Рустем
2006-04-17 19:21
2006.06.11
Неправильно осуществляется поиск в таблице...


2-1148359093
cherman
2006-05-23 08:38
2006.06.11
Задача


2-1148361462
Konnor
2006-05-23 09:17
2006.06.11
Reboot


2-1148469281
pargo
2006-05-24 15:14
2006.06.11
Описание процедуры