Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
9-1078057881
_dEMOn
2004-02-29 15:31
2004.06.27
Menu


8-1081937872
AlexK
2004-04-14 14:17
2004.06.27
Есть ли в Делфи аналог объекта Line (VisualBasic) HELP !!!


14-1086193467
ilnarab
2004-06-02 20:24
2004.06.27
Как открыть exe файл с помощью Delphi?


14-1086926059
Kurmanbek
2004-06-11 07:54
2004.06.27
Помогите плиз!!! Проблема c HDD


3-1085923975
lameridze
2004-05-30 17:32
2004.06.27
Непонятки с МайЭсКюЭль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский