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

Вниз

Битмап в метафайле   Найти похожие ветки 

 
Pul   (2004-03-31 12:33) [0]

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


 
MBo ©   (2004-03-31 12:51) [1]

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


 
Pul   (2004-03-31 14:03) [2]

Одинаково


 
MBo ©   (2004-03-31 14:11) [3]

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


 
Pul   (2004-03-31 14:14) [4]

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

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


 
MBo ©   (2004-03-31 14:17) [5]

???


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

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


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

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


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

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


 
MBo ©   (2004-03-31 15:43) [9]

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


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

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


 
MBo ©   (2004-03-31 17:27) [11]

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


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

>> 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 18:55) [13]

SetGraphicsMode(Canvas.Handle,GM_ADVANCED);

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


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

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


 
MBo ©   (2004-04-01 06:45) [15]

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-04-01 12:22) [16]

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


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

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


 
MBo ©   (2004-04-08 06:44) [18]

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


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

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


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

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



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

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
1-1086946941
Silencer
2004-06-11 13:42
2004.06.27
Проблемы с TDBComboBox


14-1086369787
Andy BitOff
2004-06-04 21:23
2004.06.27
Фанатам ELITE.


1-1087275583
an-na2002
2004-06-15 08:59
2004.06.27
внешний вид формы


3-1086070603
Valeri
2004-06-01 10:16
2004.06.27
Visual Foxpro, индексы


4-1085128930
Style
2004-05-21 12:42
2004.06.27
ProcessID и ThreadID