![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Не могу увеличить размер ТImage.
Дело в том, что я сначала в Canvas'e рисую клеточное поле, а потом при нажатии кнопки мне надо этот ТImage увеличить в размерах, и нарисовать новое поле с новым размером ячейки. Но если прописать Код:
Image1.Width := <длина> То ничего не происходит. А вот если с уменьшением длины - то без проблем. |
|
#2
|
|||
|
|||
|
Repaint После этого вызвать нужно.
|
|
#3
|
|||
|
|||
|
Field - поле ТImage.
n1,n2 - кол-во клеток по гориз. и вертикали. size - размер клетки. Код:
Field.Width := (n1-2)*size; Field.Height := (n2-2)*size; Field.Repaint; Не получается ![]() |
|
#4
|
||||
|
||||
|
А у вас свойство Stretch активно?
|
|
#5
|
|||
|
|||
|
Если активировать stretch, то поле увеличивается, но недостаточно: изначально в поле было по 15 клеток размером 20 пикс., а теперь - около 12-13.
|
|
#6
|
||||
|
||||
|
Не понял, что значит недостаточно, при включеном свойстве stretch картинка вписывается в область TImage не принимая внимание исходные пропорции. При дополнительно включеном свойстве Proportional картинка будет вписана в TImage но уже без искажений. Выложите скриншот до и скриншот после - может так понятнее будет.
|
|
#7
|
|||
|
|||
|
У меня не картинка
В TImage я рисую клетки и в них закрашиваю фишки (игра Дж. Конвея "Жизнь"). |
|
#8
|
||||
|
||||
|
Ага. А вы отрисовку в OnPaint для TImage передаете?
|
|
#9
|
|||
|
|||
|
Код:
{Задаем цвет поля}
Field.Canvas.Brush.Color := fieldcolor;
{Очищаем его}
Field.Canvas.FillRect(Canvas.ClipRect);
{Увеличиваем размер клетки поля}
inc(size,2);
{Растягиваем TImage}
Field.Width := (n1+2)*size;
Field.Height := (n2+2)*size;
Field.Repaint;
{Рисуем прямоугольники (клетки)}
Field.Canvas.Pen.Color := Form2.Panel4.Color;
for i:=0 to (n1-2) do begin
for j:=0 to (n2-2) do begin
Field.Canvas.Rectangle(i*size, j*size, i*size+size, j*size+size);
end;
end;Вот так выглядит процедура увеличения размера клеток. Вот еще скрины самого поля, до и после: ![]() |