Форум: "Основная";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизПравильный превью Найти похожие ветки
← →
Бормодед (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c