Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Изменение размеров TImage


Автор: Malloc 4.4.2006, 16:47
Я делаю задание (типа MS Paint), использую 2 TImage: Image1 - скрытый, на Image2 - рисую.

Я загружаю картинку в Image1:

Код

    Image1.AutoSize := True;
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    Image1.AutoSize := False;


Затем пытаюсь увеличить ширину Image1. По идее, неиспользованная картинкой часть должна быть белой. Почему ее нет? Рисуются линии, прямоугольники (как в задании) на загруженной картинке, это все нормально. Я еще сделал, чтобы курсор при наведении на Image1 становился карандашом, и он при движении справа от Image1 все еще карандаш, т.е. пустое место от картинки заполнилось цветом формы, хотя рисовать на этой части нельзя. Значения Transparent у обеих Image равно false.


Автор: Snowy 4.4.2006, 16:53
А теперь: в чем вопрос? И почему у тебя везде Image1, если она невидима?

Автор: Malloc 4.4.2006, 17:10
Я перепутал , Image1 - видно, Image2 - нет. Но дело не в этом. В дизайнере размеры этих компонент разные. При запуске программы они выравниваются так:

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image2.Width := Image1.Width;
  Image2.Height := Image1.Height;
end;


Они выравниваются (пока я сделал обе компоненты видимыми). Но когда я хочу выровнять их при нажатии на клавишу:

Код

procedure TForm1.ToolButton12Click(Sender: TObject);
begin
  Image2.Width := Image1.Width;
  Image2.Height := Image1.Height;
end;


ничего не происходит.



Автор: Alexeis 5.4.2006, 09:55
Malloc, а как вы определили что ничего не происходит?
Попробуйте вывести на экран Величины Image2.Width и
Image2.Height после изменения размеров

Автор: Malloc 5.4.2006, 10:45
Эти значения изменялись, но Image сама не увеличивалась. Но я уже решил проблему: Я при создании формы я писал:

Код

Image1.SetBounds(0,0,1024,768);
Image2.SetBounds(0,0,1024,768);


А потом в ходе программы уменьшал размеры до 400x300. Тогда при увеличении размеров, Image тоже увеличивался. Наверно, у Image нужно заранее ставить максимальные размеры (если я не буду использовать картинки больших размеров). Тему можно закрывать.

Автор: Alexeis 5.4.2006, 11:03
Malloc, если значения указанные в Image2.Width изменилиь то image реально увеличил размеры, однако изображение не увеличилось, потому что нужно менять размеры не только компонента но и изображения (picture) вот так
image2.Picture.Width := Image2.Width;

Автор: Niger 23.4.2006, 21:02
А у меня в 5-от Delphi пишет, что "Cannot assign to a read-only property". Как его сделать не only-read? 

Автор: Albinos_x 23.4.2006, 21:59
Цитата(Niger @  23.4.2006,  21:02 Найти цитируемый пост)
"Cannot assign to a read-only property"

преобразовать в BMP, через TBitmap сжать и загрузить
Цитата

Эти значения изменялись, но Image сама не увеличивалась

поставь:
Код

Image1.Stretch:=true;

только думаю проблем до конца это не решит smile  

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