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

Вниз

Правильное отображение повернутого текста   Найти похожие ветки 

 
Navi   (2004-09-19 09:55) [0]

Здравствуйте!
Делаю тестовый пример:
function CreateRotatedFont(FontName: String; Height, Angle: Double; Bold, Italic: Byte): hFont;
var
 LF: TLogFont;
begin
 FillChar(LF, SizeOf(LF), #0);
 with LF do
 begin
   lfHeight:= Round((Height / 25.4) * GetDeviceCaps(GetDC(0), LOGPIXELSY));
   lfWidth:= 0;
   lfEscapement:= Round(Angle * 10);
   lfOrientation:= 0;
   if Bold = 0 then lfWeight:= FW_NORMAL else lfWeight:= FW_BOLD;
   lfItalic:= Italic;
   lfUnderline:= 0;
   lfStrikeOut:= 0;
   lfCharSet:= DEFAULT_CHARSET;
   StrPCopy(lfFaceName, FontName);
   lfQuality:= DEFAULT_QUALITY;
   lfOutPrecision:= OUT_DEFAULT_PRECIS;
   lfClipPrecision:= CLIP_DEFAULT_PRECIS;
   lfPitchAndFamily:= DEFAULT_PITCH;
 end;
 Result:= CreateFontIndirect(LF);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Canvas.Font.Handle:= CreateRotatedFont("Arial", 5.0, 0.0, 0, 0);
 Canvas.TextOut(10, 10, "QweRty");
 Canvas.Font.Handle:= CreateRotatedFont("Arial", 5.0, 45.0, 0, 0);
 Canvas.TextOut(10, 75, "QweRty");
end;

Цвет фона под текстом заполнен белым. Этот "фоновый" прямоугольник определяет охватывающий прямоугольник текста. Высота этого прямоугольника для текста, повернутого на 0 градусов и на 45 градусов = 18 пиксел, только для прямого текста это "вертикальные" пикселы, а для наклонного - "диагональные". Т.о. реальная высота фонового прямоугольника для повернутого текста (при угле = 45) = высота фонового прямоугольника прямого текста * 1,41. Так же для повернутого текста нарушено положение самого текста относительно этого фонового прямоугольника. Как это лечить?
P.s. Вообще же мне нужно отобразить текст верной высоты и посчитать координаты охватывающего прямоугольника.
Спасибо.


 
Navi   (2004-09-20 19:12) [1]

Ну и где Мастера?


 
Defunct ©   (2004-09-20 19:32) [2]

рисуйте текст горизонтально на битмапе большего размера.

поворачивайте Bitmap вручную с масштабированием под требуемую высоту. Апроксимация цвета точек, которые получаются зполненными наполовину, кажется осуществляется процедурой StretchDraw в полной мере. Если я ошибаюсь насчет апроксимации, тогда вам придется подправить некоторые детали рисунка самостоятельно.



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

Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.028 c
4-1093732453
Ded Moroz
2004-08-29 02:34
2004.10.03
Звонилка по умолчанию


8-1085785561
Thinker
2004-05-29 03:06
2004.10.03
Как вставить анимированное GIF изображение на форму?


14-1095374250
KilkennyCat
2004-09-17 02:37
2004.10.03
Что лучше, Си или Паскаль?


8-1089800195
Гость
2004-07-14 14:16
2004.10.03
Как проиграть музыку через DerectX?


1-1095480561
Apl
2004-09-18 08:09
2004.10.03
Программа с манифестом XP не запускается





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский