Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

TMetafile   Найти похожие ветки 

 
Тимохов ©   (2004-03-10 19:41) [0]

Есть метафайл шириной 4000 точек. Его нужно вывести на TPaintBox шириной 1000 точек. Делается это с помощью PaintBox.Canvas.StretchDraw(rect(...), MT {metafile}).
Изучение graphics.pas показало, что это делается с помощью PlayEnhMetaFile.

Вопрос: можно ли "сказать" функции PlayEnhMetaFile, чтобы все линии в метафайле в результате вывода на paintbox.canvas имели минимальную ширину в 1 пиксел? Поясню: в метафайле есть линии шириной 1, при StretchDraw они уменьшаются в 4 раза, т.е. становятся 0.25 и естественно не выводятся на paintbox.canvas. Хотелось бы заставить PlayEnhMetaFile выводить линии в любом случае. Возможно ли это?


 
YuRock ©   (2004-03-10 19:51) [1]

Думаю нет. Разве что самому вручную стречить.


 
Тимохов ©   (2004-03-10 19:56) [2]

У меня почему-то аналогичное ощущение.


 
MBo ©   (2004-03-11 06:50) [3]

Не поможет ли рисование этих линий в метафайле пером стиля PS_COSMETIC?


 
Тимохов ©   (2004-03-11 11:27) [4]

2MBo
Посмотрел.

Смущает вот это: The width of a cosmetic pen is always 1.

Что с ним будет при уменьшении метафайла? Наверное линия нарисованная таким pen скроется?

Я, конечно, могу поставить эксперимент. Но подумал, может вы знаете ответ?


 
MBo ©   (2004-03-11 12:36) [5]

Думаю, не скроется. Однако у меня и так (со штатным пером) при StretchDraw не пропали линии...
Покажи код создания метафайла.


 
Курдль ©   (2004-03-11 13:08) [6]

StretchDraw, мэйбыть, и вызывает PlayEnhMetaFile, но это не значит, что эта функция сразу рисует метафайл по канве пэйнтбокса. Скорее всего она делает все действия на временном MetafileCanvas-е а потом Stretch-ит битовое мзображение.
Я не уверен, но советую поиграться различными MetafileCanvas-ами, задавая им разные разрешения, размеры фонтов, пэны и т.п.


 
Тимохов ©   (2004-03-11 13:10) [7]


> MBo ©   (11.03.04 12:36) [5]

Блин.
Код который я модифицировал писал не я.
И мне в голову не приходилось проверять какими средствами рисуются линии. А они оказалось рисуются fillrect а не moveto/lineto. Изменил на moveto/lineto и все заработало.
Спасибо про косметическое перо. Дельфи именно его и использует (createpeninderect).

Спасибо всем. Проблема решена.

Вывод для возможно интересующихся: если рисовать все на метафайле штатным пером, которое предоставляет дельфи через функции lineto/moveto при переносе на paintbox все работает прекрасно - линии не скрываются при любом масштабировании.

Вот блин, сколько времени потрачено на ерунду :)))))


 
Тимохов ©   (2004-03-11 13:11) [8]

Ура, я снова люблю метафайлы :)))))))



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

Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.027 c
1-1078905393
Lexer
2004-03-10 10:56
2004.03.28
Оценка программных средств


14-1077692614
Карелин Артем
2004-02-25 10:03
2004.03.28
Как побороть модем в Win 2000?


1-1078393346
Aleksandr
2004-03-04 12:42
2004.03.28
Есть средства анализа объектов программы?


1-1078429446
КомофОнСамый
2004-03-04 22:44
2004.03.28
Как из TMemoryStream загрузить в TImage


1-1078922826
maxon
2004-03-10 15:47
2004.03.28
создание компонента





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