Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

canvas.textWidth для разных стилей


Страницы:   1 2 3

novichek ©   (2010-01-18 22:31:00) 

Устанавливаю стиль в fsItalic.
canvas.textWidth возвращает то же самое что и при отсутствии стиля.
В результате конец текста обрезан немного.

Подскажите пожалуйста, с чем связано, что для одного шрифта результат вроде бы правильный, для другого нет..

в процессе мучения, из-за выхода текста за размеры, набросал для теста:

procedure TForm1.Button1Click(Sender: TObject);
const
//  test = 'Проверка связи ры ры ры рычаг';
 test = 'test test test test';
var
 bmp: TBitmap;
 x1, x2, x3, x4: Integer;

 procedure drawbmp(offset: Integer);
 begin
    bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
    bmp.Canvas.TextOut(0, 0, test);
    form1.Canvas.Draw(0, offset, bmp);
 end;

begin

 bmp:= TBitmap.Create;
 bmp.Canvas.Brush.Color:= clBlack;
 bmp.Canvas.Font.Color:= clWhite;

 bmp.Canvas.Font.Name:= 'Comic Sans MS';
 bmp.Canvas.Font.Size:= 40;
 bmp.Height:= bmp.Canvas.TextHeight('Py');

 bmp.Canvas.Font.Style:=[];
 x1:= bmp.Canvas.TextWidth(test);
 bmp.Width:= x1;
 drawbmp(0);

 bmp.Canvas.Font.Style:=[fsItalic];
 x2:= bmp.Canvas.TextWidth(test);
 bmp.Width:= x2;
 drawbmp(bmp.Height + 10);

 bmp.Canvas.Font.Style:=[fsBold];
 x3:= bmp.Canvas.TextWidth(test);
 bmp.Width:= x3;
 drawbmp(bmp.Height*2 + 10*2);

 bmp.Canvas.Font.Style:=[fsBold, fsItalic];
 x4:= bmp.Canvas.TextWidth(test);
 bmp.Width:= x4;
 drawbmp(bmp.Height*3 + 10*3);

 bmp.Free;

 ShowMessage('[] - '+IntToStr(x1)+',  [fsItalic] - '+IntToStr(x2)+',  [fsBold] - '+IntToStr(x3)+',  [fsBold, fsItalic] - '+IntToStr(x4));

end;

с чего и сделал вывод, что возвращаемые значения ширины немного не понятные..

как узнать  для данного шрифта правильный размер при fsItalic ?


Игорь Шевченко   (2010-01-18 22:42:00) [41]


> canvas.textWidth возвращает то же самое что и при отсутствии
> стиля.


Было бы странно обратное.

http://www.rsdn.ru/forum/winapi/1098456.flat.aspx


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо