Главная страница
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.047 c
1-1078662258
JIruaasgyy
2004-03-07 15:24
2004.03.28
Проблема с загрузкой Excel в TOLEConteiner


6-1073855568
Sir Alex
2004-01-12 00:12
2004.03.28
Утечка памяти и ресурсов (HTMLViewer) в W98


1-1078965622
Chlavik
2004-03-11 03:40
2004.03.28
При Application.Minimize оставляем одно окно в OnTop


1-1078469102
Alex_DM
2004-03-05 09:45
2004.03.28
Вызов модального окна. Возможно ли это?


3-1078140108
Ross
2004-03-01 14:21
2004.03.28
ADOQuery: запрос на добавление