Страница 1 из 1
Менять картинки в Delphi
Добавлено: 17 ноя 2004, 19:20
senator
Здравствуйте! У меня такой вопрос. Делаю анкету студента, и там помещаются две фотографии: одна на другую. И нужно сделать так, чтобы при нажатии на кнопку показывалась одна фотография, нажал еще раз на кнопку и появилась другая фотография. Заранее спасибо.
Добавлено: 18 ноя 2004, 15:02
AndreykA
самый простой вариант - сделать переменную флаг, которая будет меняться при нажатии кнопки и в соответствии со значением флага показывать 1-ую или 2-ую фотку
Добавлено: 18 ноя 2004, 16:34
Romeo
Просто играться флажком Vision.
Добавлено: 18 ноя 2004, 17:39
senator
AndreykA писал(а):самый простой вариант - сделать переменную флаг, которая будет меняться при нажатии кнопки и в соответствии со значением флага показывать 1-ую или 2-ую фотку
Простите, что за переменная "флаг"?
Добавлено: 18 ноя 2004, 17:47
Romeo
У картинки есть куча свойств, одно из них - Vision. Это свойство можно менять как в редакторе форм, так и в ходе выполнения прораммы, обращаясь к нему через точку (например img.Vision).
Добавлено: 18 ноя 2004, 17:50
AndreykA
это образно говоря.
просто объявляешь переменную например var MyVariable: boolean;
и когда видна фотка 1, то значение MyVariable := True; а когда фотка 2 соответственно False
а вообще как сказал
Romeo писал(а):Просто играться флажком Vision.
то есть вместо обявления и попеременного присваивания значения переменной, проверяй свойство у картинки
Например если одна из них Visible, то при нажатии кнопки нужно ее сделать Visible := False; , а второй картинке True; и так далее
Добавлено: 01 дек 2004, 05:40
Naeel Maqsudov
Наиболее простое решение, как мне кажется, - это использование TImageList + TPaintBox
Фотографии грузятся в TImageList (в Design-time или в Run-time (метод Add))
Для отображения i-той фотографии используется TPaintBox, или любой компонент со своей канвой (Canvas)
Код: Выделить всё
const
idx:integer=0;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
Imagelist1.Draw(PaintBox1.Canvas,0,0,idx);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
idx:=succ(idx) mod Imagelist1.Count;
PaintBox1.Repaint;
end;
Здесь
1) всякий раз PaintBox1 при своей отрисовке берет idx-ный рисунок из Imagelist1.
2) при нажатии на Button1 циклически уывеличивается idx и инициируется
перерисовка PaintBox1
Т.е. все что нужно - это поменять idx и инициировать перерисовку контрола,
который для свооей отрисовки использует рисунки из ImageList-а.
Добавлено: 23 дек 2004, 12:50
cg_spooler
Если размеры фоток одикаковые, то можно поиграться со свойствами .SendToBack, .BringToFront. Имхо это проще.