У меня есть Form1, на ней расположены Panel1 (Align = alTop), на панели - Button1. Далее в оставшейся области формы (свойство Align = alClient) расположен компонент TImage. Все это можно увидеть на картинке.
Событие OnClick для кнопки:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1.Canvas do
begin
Brush.Color := clYellow;
Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);
end;
end;
То есть мы рисуем в области Image1 желтый прямоугольник (можно любого другого цвета).
Теперь три ситуации:
1) запускаем приложение, нажимаем на кнопку - на всей области TImage рисуется прямоугольник
2) запускаем приложение, изменяем размер формы (например, увеличиваем), нажимаем на кнопку - также рисуется на всей области TImage.
3) после ситуации 2 увеличиваем размер еще немного и после этого нажимаем на кнопку.
Чего я ждал от ситуации 3: полное закрашивание TImage желтым цветом.
Что я получил: частичное закрашивание только той области, которая была закрашена в прошлый раз.
Что я делаю не так?
Добавлено спустя 4 часа 42 минуты 17 секунд:
Кажется, я понял, в чем дело. При первом обращении к Canvas предположительно устанавливаются значения Image1.Canvas.Width := Image1.Width и Image1.Canvas.Height := Image1.Height, которые затем не изменяются при изменении размеров Image1. Остается лишь один вопрос: такое поведение - баг или документированная возможность (feature)? Мне это кажется немного странным.