Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Битмап в метафайле [D7, WinXP]


Pul ©   (2004-03-31 12:33:00) 

Я вывожу текст на битмап, затем делаю поворот этого битмапа и вывожу на канву наследника TGraphicControl. При копировании канвы формы в метафайл, текст получается кубиками. Подскажите пожалуйста, как избавиться от такого эффекта?
Мне кажется, что это связано с разрешающей способностью канвы, хотя я могу ошибаться.


Pul   (2004-04-09 14:12:00) [1]

>> MBo ©   (08.04.04 06:44) [18]
могу привести пример кода или выслать exe для наглядности


Pul   (2004-04-09 11:48:00) [2]

Да, есть.
Я перед выводом текста вычисляю rect, в который помещается текст ( DrawText(....or DT_CALCRECT) ). Один и тот же текст с одинаковыми размерами rect'а, но под разным углом выглядит по разному.


MBo   (2004-04-08 06:44:00) [3]

Хм... А место для вывода есть?


Pul   (2004-04-07 19:39:00) [4]

По поводу вашего совета с поворотом канвы.
При повороте на 180 проблем не возникает, а при повороте на 181,179 градусов - обрезается примерно половина последней строки текста. С чем это может быть связано?


Pul   (2004-04-01 12:22:00) [5]

>> MBo ©   (01.04.04 06:45) [15]
Огромное спасибо!


MBo   (2004-04-01 06:45:00) [6]

procedure TForm1.Button1Click(Sender: TObject);
var
 xf:TXForm;
 A:Double;
begin
A := Pi/4;
xf.eM11:=Cos(A);
xf.eM12:=Sin(A);
xf.eM21:=-Sin(A);
xf.eM22:=Cos(A);
xf.eDx:=0;
xf.eDy:=0;
SetGraphicsMode(Canvas.Handle,GM_ADVANCED);
SetWorldTransform(Canvas.Handle, xf);
Canvas.Textout(200,100,'QWERTY');
end;

выводит текст под углом (в NT,2K,XP)


Pul   (2004-03-31 19:28:00) [7]

Да, SetWorldTransform стал возвращать True, но результата никакого не видно


MBo   (2004-03-31 18:55:00) [8]

SetGraphicsMode(Canvas.Handle,GM_ADVANCED);

Учти, что GM_ADVANCED, к сожалению, сбрасывается при перерисовке формы, даже если Caption поменять между SetGraphicsMode и SetWorldTransform. Для битмапа или контекста метафайла все OK


Pul   (2004-03-31 18:41:00) [9]

>> MBo ©   (31.03.04 17:27) [11]
SetWorldTransform всегда возвращает False. Интересно, почему?

VAR
 C: tagXFORM;
 A: Real;
begin
 A := Pi/4;
 C.eM11:=Cos(A);
 C.eM12:=Sin(A);
 C.eM21:=-Sin(A);
 C.eM22:=Cos(A);
 C.eDx:=0;
 c.eDy:=0;
 if SetWorldTransform(Canvas.Handle, C) then
   Label1.Repaint;
end;


MBo   (2004-03-31 17:27:00) [10]

SetWorldTransform не спасет?  (NT-семейство)


Pul   (2004-03-31 17:22:00) [11]

>> MBo ©   (31.03.04 15:43) [9]
Что самое интересное, что в метафайле это возможно. И выравнивание, и разбиение на строки - и все это под произвольным углом. Как же вставить в метафайл текст с разбиением на несколько строк?


MBo   (2004-03-31 15:43:00) [12]

Для себя - нет, но в форуме проплывало как-то.


Pul   (2004-03-31 15:34:00) [13]

>>MBo ©   (31.03.04 14:20) [7]
если без поворота, то проблем нет, а по 45 градусов, задолбаешься.
А вам тоже приходилось делать подобное?


MBo   (2004-03-31 14:20:00) [14]

Угу, тогда самому придется рассчитывать переносы...


Pul   (2004-03-31 14:18:00) [15]

>>MBo ©   (31.03.04 14:17) [5]
Функция DRAWTEXT игнорирует флаг DT_WORDBREAK


MBo   (2004-03-31 14:17:00) [16]

???


Pul   (2004-03-31 14:14:00) [17]

>>MBo ©   (31.03.04 14:11) [3]
(см. структуру LogFont)

С применением этой структуры теряется wordwrap


MBo   (2004-03-31 14:11:00) [18]

Штатный вывод текста производится с антиалиасингом, т.е. сглаживанием зазубрин. При повороте качество, конечно, ухудшается. Можно использовать изощренные методы поворота - с билинейной или бикубической интерполяцией или наложить фильтр на повернутую картинку, однако исходной красоты достичь не удастся. Думаю, проще на конечный результат выводить текст повернутым шрифтом (см. структуру LogFont)


Pul   (2004-03-31 14:03:00) [19]

Одинаково


MBo   (2004-03-31 12:51:00) [20]

метафайл с битмапом выглядит хуже, чем повернутый битмап?


Наверх

Титульная страница Поиск, карта сайта Написать письмо