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

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

Использование 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);


Наверх

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