![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FontOrientation или текст под углом
Bmouradov © (2007-04-08 16:48:00)Хочу сообщить о найденной мной ошибке (?) при выводе на canvas текста под углом:
Canvas.Font.FontHeight := 20;
Canvas.Font.FontName := 'Arial';
Canvas.Brush.BrushStyle := bsClear;
Canvas.Font.FontOrientation := 0;
Canvas.TextOut(100, 100, 'один');
Canvas.Font.FontOrientation := -450; // минус 45 градусов
Canvas.TextOut(100, 150, 'два');
Canvas.Font.FontOrientation := 0;
Canvas.TextOut(100, 200, 'три');
При этом третий текст печатается под углом -45 градусов, хотя не должен.
Однако, если во втором случае написать
Canvas.Font.FontOrientation := 3150; // минус 45 градусов
тогда всё будет правильно. Возможно, отрицательный угол как-то неправильно обрабатывается.
Vladimir Kladov (2007-04-12 19:58:00) [1]Причину нашел. Исправление будет скоро.
Bmouradov (2007-04-08 20:14:00) [2]Проверил. В PAS_VERSION этой ошибки вообще нет. Выходит, ошибка в KOL_ASM.pas. Также проверил следующее - в режиме PAS_VERSION в Kol.pas заменил SetFontOrientation на версию из KOL_ASM, ошибка вновь появилась. Значит, ошибка находится в KOL_ASM.pas в SetFontOrientation.
Vladimir Kladov (2007-04-08 19:55:00) [3]Скорее всего, проблема в этой строчке в SetFontOrientation:
Value := Value mod 3600;
В принципе, можно было бы написать
if Value < 0 then Value := -( (-Value) mod 3600 ) else Value := Value mod 3600;
Попробуйте эту строчку подставить в KOL.pas (строка ~ 15242). Если заработает правильно, так и оставим.
Bmouradov (2007-04-08 18:56:00) [4]Если бы конвертировался в плюс, то было бы так:
второй текст под +45, а третий 0.
А получается:
второй под -45, и третий -45.
А должно быть:
второй под -45, третий 0.
D[u]fa (2007-04-08 18:00:00) [5]наверное все что "-" конвертируется в "+"