Форум: "Основная";
Текущий архив: 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.034 c