Изменение изображений, нажав на компонент TImage - Delphi - PullRequest
0 голосов
/ 11 июня 2009

Я хочу изменить изображение , загруженное в Изображение1 - с одного с именем 1active.png на второе с именем 1inactive.png и наоборот наоборот , нажав в компоненте Image1.

Есть ли способ сделать это?

Ответы [ 3 ]

5 голосов
/ 12 июня 2009

Я предполагаю, что вы используете D2009, поскольку вы можете загрузить файл PNG в Image1.

Если вы не хотите распространять свои изображения вместе с вашим приложением (как предполагает решение skamradt), вы должны включить их в качестве ресурсов:
Добавьте png в ваш проект: используйте меню " Project | Resources ... " и добавьте файлы.
Назовите их соответственно, чтобы получить что-то вроде:

 1active.png    RCData  PngImage_Active  
 1inactive.png  RCData  PngImage_Inactive  

В вашем событии Click вам понадобится индикатор состояния, чтобы знать, какой из них отображать (например, skamradt).
Я использовал Image1.hint, чтобы сказать, какое изображение загружено (быстро и грязно, для демонстрации).

Используйте процедуру LoadImgFromPngResource ниже, чтобы загрузить соответствующее изображение PNG:

procedure LoadImgFromPngResource(const AResName: string; DestImage: TImage);
var
  png: TPngImage;
begin
  png := TPngImage.Create;
  try
    png.LoadFromResourceName(HInstance, AResName);
    DestImage.Picture.Assign(png);
  finally
    png.Free;
  end;
end;

procedure TForm4.Image1Click(Sender: TObject);
begin
  if Image1.Hint <> 'Active' then
  begin
    LoadImgFromPngResource('PngImage_Active', Image1);
    Image1.Hint := 'Active';
  end
  else
  begin
    LoadImgFromPngResource('PngImage_Inactive', Image1);
    Image1.Hint := 'Inactive';
  end;
end;
3 голосов
/ 11 июня 2009

ингредиенты

  • 1 логическая переменная
  • 1 компонент изображения
  • 1 строка добавлена ​​в обработчик события OnCreate формы
  • 1 Обработчик событий TImage.OnClick

Инструкция

1) Создайте логическую переменную в приватном разделе вашего объявления формы. Для этого примера вызовите эту переменную fImageActive.

private
  fImageActive : boolean;

2) В конструкторе форм перетащите (или выберите существующий) компонент TImage на форму, выберите событие onClick и дважды щелкните, чтобы переключиться на редактирование. Затем добавьте следующий код:

  fImageActive := not fImageActive;
  if fImageActive then
    Image1.Picture.LoadFromFile('1active.png')
  else
    Image1.Picture.LoadFromFile('1inactive.png')

3) В конструкторе форм найдите свойство изображения и щелкните многоточие, чтобы загрузить файл 1active.png для начинающих.

4) Нажмите на форму, найдите событие с именем «OnCreate», дважды щелкните и добавьте следующий код (это установит начальное состояние):

  fImageActive := true;
0 голосов
/ 11 июня 2009

Вы должны загрузить оба изображения в файл ресурсов вашего проекта, а во время выполнения вы можете прочитать фотографии из файла ресурсов и загрузить их в изображение на OnClick. Версия Delphi, которую я сейчас использую (6), не имеет встроенной поддержки файлов PNG, но я думаю, что последняя версия поддерживает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...