![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование TCanvas для определения размера шрифта
Yl2011 © (2012-04-05 12:48:00)Здравствуйте!
Вот есть некий текст, ширину которого мне необходимо узнать.
Но в используемом компоненте “Canvas” работает некорректно
, поэтому мне необходимо создать свой и в нем все изменить с тем шрифтом и размером шрифта, который используется моем глючном компоненте, а потом приплюсовать эту ширину в компонент. Вот когда я делаю так, то не работает. Пишет «Canvas doesn’t allow drawning»:
Var
Ac:TCanvas;
begin
Ac:=TCanvas.Create;
Ac.Font.Name:='Arial';
Ac.Font.size:=12;
Showmessage(Inttostr(Ac.TextWidth('1111111111122222222')));
end;
А как правильно?
ford (2012-04-06 21:18:00) [1]для определения длины текста в пикселях, я использовал следующее
While DBGrid1.Canvas.TextWidth(nme)<200 do nme:=nme+' ';
где nme это строка с выводимым текстом
В вашем случае надо прислушаться к Yl2011
хотя, странно, но не ужели у Вас нет ни одного визуального компонента, наследника от TForm?
webpauk (2012-04-05 13:18:00) [2]
> Но в используемом компоненте “Canvas” работает некорректно
судя по всему надо сделать Ac.Handle:=GetDC(Component.Handle);
webpauk (2012-04-05 13:13:00) [3]на абстрактном канвасе и возникает абстрактная ошибка. )))
канвас должен быть с чем-то связан (контекст)
Yl2011 (2012-04-05 13:10:00) [4]Ваш пример работает!
А что это за строка:
Ac.Handle:=GetDC(Application.Handle);
webpauk (2012-04-05 12:56:00) [5]вообще то это я для примера. тебе необходимо определить контекст канваса
webpauk (2012-04-05 12:55:00) [6]Ac:=TCanvas.Create;
Ac.Handle:=GetDC(Application.Handle);