Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.046 c
1-1078822095
3asys
2004-03-09 11:48
2004.03.28
Создание компонента по имеющемуся имени класса


1-1078904652
Карелин Артем
2004-03-10 10:44
2004.03.28
Существует ли свойство у компонента?


11-1056811295
Юрий Ж.
2003-06-28 18:41
2004.03.28
Как задать шрифт RichEdit?


1-1078866459
tytus
2004-03-10 00:07
2004.03.28
Как сохранять объект в TreeView?


1-1079030891
Rim
2004-03-11 21:48
2004.03.28
Массив