Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Не меняется автоматически масштаб рисунка


Автор: Нитонисе 30.11.2010, 15:57
Есть компонент TImage заполняющий полностью форму TForm1, свойство Align = alClient.
Черчу линию в Image с расстоянием в 20 пикселов от левого края и 20 пикселов от правого края.
На событие формы OnResize вешаю функцию перерисовки линии в связи с новыми размерами Image, но метод работает только в сторону уменьшения размера форму - линия отрисовывается как надо, а вот если увеличивать форму, то расстояние от правой границы тоже увеличивается. Линия не вычерчивается длиннее, чем она была в исходных размерах компонента Image. 
В чем тут дело?

Автор: Нитонисе 30.11.2010, 16:30
Цвет фона делал как у формы, поэтому не сразу увидел, что канва вообще не меняется, а меняется только компонент Image. Размер канвы остается неизменным после первого к ней обращения... не очень удобно. В компоненте PaintBox такой проблемы нет.

Автор: 586 2.12.2010, 06:46
Цитата(Нитонисе @  30.11.2010,  16:30 Найти цитируемый пост)
канва вообще не меняется, а меняется только компонент Image. Размер канвы остается неизменным после первого к ней обращения...

Размер канвы меняется так:
Код
Image1->Picture->Bitmap->Width = Image1->Width;
Image1->Picture->Bitmap->Height = Image1->Height;

Автор: Нитонисе 2.12.2010, 10:39
Цитата(586 @  2.12.2010,  06:46 Найти цитируемый пост)
Размер канвы меняется так:

Будем знать)

Пока работаю с PaintBox, предстоит много рисовать... чем этот компонент отличается от Image? Знаю только, что Image перерисовывается автоматически, но у PaintBox размер канвы следует за размером самого PaintBoxa. Грань, заставляющая выбрать PaintBox, пока очень тонкая, может мне бы Image было лучше.

Автор: oldcode 2.12.2010, 11:56
1. Читаем названия:
компонент PaintBox - создает область, в которой можно рисовать
компонент Image, в который можно загрузить какое-либо изображение
2. Смотрим свойства
а если рисовать на канве - то по барабану - на форме, на панели, где-то еще...
и вот, запамятовал - AutoSize - разрешает автоматическое изменение размеров компонента по размера изображения 

Автор: 586 2.12.2010, 19:43
Цитата(Нитонисе @  2.12.2010,  10:39 Найти цитируемый пост)
Знаю только, что Image перерисовывается автоматически

В этом и приемущество. Если прорисовка сложная. А недостаток в том, что компонент выделяет память под TBitmap (который и выводит компонент TImage).

Автор: oldcode 2.12.2010, 21:15
Цитата
Знаю только, что Image перерисовывается автоматически
 - а Repaint() ему уже отменили ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)