Форум: "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