Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2008, 15:25   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
Восклицание Как изменять размеры шрифта при изменении размеров canvas?

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

Код:
function CalcFontSize(Canvas : TCanvas; s : String; FontSize, hL, wL, Delta : Integer): Integer;
     var Size : TSize;
begin
  Result := FontSize+1;
  repeat
    Canvas.Font.Size := Result;
    Size.cx := Canvas.TextWidth(ws);
    Dec(Result);
  until Size.cx < wL-Delta;
end;
FontSize - начальный размер шрифта;
hL, wL - размеры канваса битмапа;
Delta - некоторая константа разницы между шириной текста и шириной битмапа.

Спасибо.

Последний раз редактировалось rpy3uH; 07.12.2008 в 20:41.
SkAndrew вне форума Ответить с цитированием
Старый 07.12.2008, 19:38   #2
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Можно так
Код:
procedure Tforma.FormPaint(Sender: TObject);
begin
   canvas.Font.Height := height div 10 + width div 10;
   canvas.TextOut(10, 10, 'text');
end;

procedure Tforma.FormResize(Sender: TObject);
begin
   repaint;
end;
Можно ещё как-то...
Altera вне форума Ответить с цитированием
Старый 07.12.2008, 23:02   #3
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Спасибо, но, к сожалению, пример не соотвествует решаемой задачи. нужна функция, которая будет работать, прежде всего, с битмапами и текстом на них при изменении размеров последних. Все спасибо. Какие еще есть идеи?
SkAndrew вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст при изменении размеров окна Dj_smart HTML и CSS 2 25.11.2008 23:23
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01
Текст, находящийся в компоненте label, должен изменять свои размеры DenSuper007x Помощь студентам 8 16.03.2008 14:58
Как реально в 1с 8.0 при максимальных правах отказать в изменении ссправочника пользователей elena_77 Свободное общение 0 27.09.2007 15:41
Как изменять размеры StringGrid Мышкой Inbox Компоненты Delphi 4 30.06.2007 14:34