Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
2-1148728019
manevil
2006-05-27 15:06
2006.06.11
Запрос


15-1148034709
saxon
2006-05-19 14:31
2006.06.11
Задачка про гномов


2-1148439658
sergey_vl
2006-05-24 07:00
2006.06.11
Помогите организовать словарь с возможностью поиска


15-1147845114
Knight
2006-05-17 09:51
2006.06.11
Как в винде после конвертации диска С в нтфс...


2-1148390088
rra
2006-05-23 17:14
2006.06.11
Заполнение DBLookupComboBox a из поля таблицы...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский