Главная страница
    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.012 c
2-1148458237
TSa
2006-05-24 12:10
2006.06.11
Работа с SQlite


3-1145255279
RomanH
2006-04-17 10:27
2006.06.11
IB.Системные таблицы


15-1147715052
Некто_
2006-05-15 21:44
2006.06.11
Нифига себе цена! =)


2-1148373421
Юрик
2006-05-23 12:37
2006.06.11
Поиск в аксесе ч з Дельфи??


15-1147848626
*Pavel
2006-05-17 10:50
2006.06.11
Кто знаком с GSM-bridge ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский