Главная страница
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.021 c
1-1087284398
Igoryok
2004-06-15 11:26
2004.06.27
Про формулы как в МатКаде


1-1087277090
Salik
2004-06-15 09:24
2004.06.27
IncMonth на оборот?


14-1086576248
Думкин
2004-06-07 06:44
2004.06.27
С днем рождения! 7 июня


1-1086768073
KSergey
2004-06-09 12:01
2004.06.27
О построении DBGridEh


9-1078136542
woolf/psycho
2004-03-01 13:22
2004.06.27
DirectPaly в DelphiX