none
компонент Button.задать битовый образ свойству Image. RRS feed

  • Вопрос

  • Здравствуйте,

    Хочу свойству компонента myButton (класс Button) Image задать битовый образ openfile.bmp.

    Для этого делаю:

    Bitmap ^myButtonImage = gcnew Bitmap("D:\\openfile.bmp");

    myButtonImage->MakeTransparent();

    myButton->Image = myButtonImage;

    Вроде всё компилируется, изображение на кнопке появляется, успешно создаётся пакет установщика программы. НО! при попытке запустить программу на компьютере где не установлен Visual Studio появляется следующая ошибка:

    Имя события проблемы: CLR20r3

    Сигнатура проблемы 01: note.exe

    Сигнатура проблемы 02: 0.0.0.0

      Сигнатура проблемы 03: 4ec36e56

      Сигнатура проблемы 04: System.Drawing

      Сигнатура проблемы 05: 4.0.0.0

      Сигнатура проблемы 06: 4ba1e086

      Сигнатура проблемы 07: 6c

      Сигнатура проблемы 08: 26

      Сигнатура проблемы 09: System.ArgumentException

     

    Делаю по-другому.

    Добавляю файл битового изображения в файл ресурсов app.rc, для этого правой кнопкой мыши на app.rc ->Add Resourse->Bitmap->Import и указываю мой файл openfile.bmp.

    Bitmap ^myButtonImage = gcnew Bitmap("openfile.bmp");

    myButtonImage->MakeTransparent();

    myButton->Image = myButtonImage;

    И тут опять же удачно проходит компиляция, но при запуске программы на чужом компьютере появляется та же ошибка.

    Что делаю не так?

    Как убедиться что битовое изображение берётся из файла ресурсов app.rc?

    Как загрузить битовое изображение из файла ресурсов?

    Спасибо всем заранее!

     

    16 ноября 2011 г. 11:16

Ответы

Все ответы

  • Подозреваю, что дело не в наличии или отсутствии Visual Studio а в версии и комплектации пакета .Net на конечном компьютере. Убедитесь что на нужном компьютере установлена соответствующая версия .Net и в ее состав входят все сборки, что использует ваша программа и особенно сборка System.Drawing
    Влюблен в WPF
    16 ноября 2011 г. 12:21
    Отвечающий
  • Эх, выручайте!

    Версия .Net совпадает. Установила её с того же дистрибутива, что предлагал мне установщик Visual Studio.

    А где и как проверить наличие сборки System.Drawing? =(

    17 ноября 2011 г. 5:48

  • Скорей всего дело не в сборке, а ее в использовании.

    На втором компьютере, где вы запускаете программу, на диске D файл с картинкой есть?
        Bitmap("D:\\openfile.bmp");

    Более подробной информации об ошибке вы получить не можете? Попробуйте обернуть этот код в try-catch блок, в catch перехватывайте Exception и выведите, например в MessageBox сообщение об ошибке.

    try
    {
     // ваш код
     Bitmap ^myButtonImage = gcnew Bitmap("D:\\openfile.bmp");
     myButtonImage->MakeTransparent();
     myButton->Image = myButtonImage;
    }
    catch (Exception^ ex)
    {
      MessageBox::Show(ex->Message)
    }
    

     


    Для связи [mail]
    17 ноября 2011 г. 6:06
  • Спасибо! Сейчас же попробую,

    но даже если я помещаю файл с картинкой в файл ресурсов, возникает та же ошибка.

    (Добавляю файл битового изображения в файл ресурсов app.rc, для этого правой кнопкой мыши на app.rc ->Add Resourse->Bitmap->Import и указываю мой файл openfile.bmp.

    Bitmap ^myButtonImage = gcnew Bitmap("openfile.bmp");)

    17 ноября 2011 г. 6:13
  • Выводит сообщение "Parameter is not valid".

    Как правильно обратиться к файлу картинки, который находится в файле ресурсов app.rc?

    Думаю в этом моя ошибка.

    17 ноября 2011 г. 6:21
  • Используйте не app.rc, а embedded resources. Посмотрите топик и ответ How to use app.ico from app.rc?, там написано как это сделать.


    Для связи [mail]
    • Предложено в качестве ответа LXGDARKEditor 17 ноября 2011 г. 10:05
    • Помечено в качестве ответа Abolmasov Dmitry 17 ноября 2011 г. 10:50
    17 ноября 2011 г. 6:51
  • Спасибо огромное!! Всё получилось!
    17 ноября 2011 г. 7:29
  • Не забывайте отмечать сообщения, которые решают вашу проблему (под каждым сообщением есть кнопка Пометить как ответ). Спасибо.


    Для связи [mail]
    17 ноября 2011 г. 10:50