Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416

Ошибка в методе PictureBox1.Image = new Bitmap(,);

21.05.2023, 16:02. Показов 776. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Подскажите пожалста что должно быть во втором аргументе в методе
C#
1
this.PictureBox1.Image = new Bitmap(typeof(Button), "Button.bmp");
потому что получаю ошибку: System.ArgumentException: "Resource 'D:\.......\bin\Debug\Data\Button.bmp' cannot be found in class 'System.Windows.Forms.Button'."
хотя там есть такой файл. И в ресурсах есть. И когда вторым аргументом пишу абсолютный путь - то та же ошибка
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2023, 16:02
Ответы с готовыми решениями:

Как обрезать Image (bitmap) в другой Image (bitmap)
Не получается никак пробовал с помощью Canvas->CopyRect. Вот метод где первый параметр изображение которое загрузили а второй обрезанное...

Ошибка Bitmap image is not valid
Что делать если выскакивает: Bitmap image is not valid. Как это исправить?

Ошибка: Can only modify an image if it contains a bitmap
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...

16
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 16:23
Цитата Сообщение от DLD Посмотреть сообщение
И в ресурсах есть.
Как именно вы добавили файл в ресурсы?

Цитата Сообщение от DLD Посмотреть сообщение
что должно быть во втором аргументе в методе
Тут скорее в первом аргументе ошибка. Вы никак не могли добавить ресурс к системному классу Button.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 16:44  [ТС]
OwenGlendower, как я добавлял в ресурс ? . . . я добавил ресурс в свой проект. . . в Обозревателе решений открыл файл "Form1.resx" -- во вкладке "Добавить ресурс" раскрыл стрелку где выбрал первый пункт: "Добавить существующий файл..." -- и выбрал из папки этого же проекта: "...\bin\Debug\Data" файл "Button.bmp", куда я его поместил заранее

Добавлено через 4 минуты
OwenGlendower, это пример отсюда . . . разве там может быть ошибка в первом аргументе метода ?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 17:11
Цитата Сообщение от DLD Посмотреть сообщение
в Обозревателе решений открыл файл "Form1.resx"
И проигнорировали предупреждение VS что этот файл не следует редактировать?

Правильнее было добавить его в глобальные ресурсы через Properties\Resources.resx. Тогда обращение к ресурсу выглядело бы так
C#
1
Bitmap bitmap = Properties.Resources.Button;
Цитата Сообщение от DLD Посмотреть сообщение
это пример отсюда . . . разве там может быть ошибка в первом аргументе метода ?
Легко ... если применять примеры не думая.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 18:32
Дополню свой ответ насчет "ошибки в примере" потому что я зря переложил вину на вас. Пример из документации не содержит ошибку как таковую. Ему нужен определенный контекст для правильной работы, который не описан в примере. К этому следует быть готовым. Качество примеров в документации бывает разным. Когда-то они сразу работают, когда-то требуют минимальных модификаций, а когда-то необходимы более сложные модификации, требующие хорошего понимания предметной области. У новичков такого понимания еще нет и поэтому пример может и не помочь. Чтобы разобраться придется потратить время на изучение темы - в данном случае ресурсов. Кроме того, следовало изучать документацию по конструктору класса Bitmap. Там приводится такой же по сути пример, но одновременно даются пояснения про взаимосвязь двух аргументов. И если изучение документации не помогает, то тогда уже можно идти на форум с вопросом. На этом этапе вы должны быть в состоянии очень четко сформулировать вопрос.

И второй момент - не игнорируйте сообщения от среды разработки.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 20:22  [ТС]
OwenGlendower, я добавил ресурс вот так: свойства проекта - Ресурсы - перешел по ссылке "Создать или открыть ресурсы сборки"- на первой вкладке слева выбрал "Изображения", туда перетащил мышкой файл "Button.bmp" и сохранил. Все равно ошибка: System.ArgumentException: "Resource 'Button.bmp' cannot be found in class 'System.Windows.Forms.Button'."
в строке кода
C#
1
this.PictureBox1.Image = new Bitmap(typeof(Button), "Button.bmp");
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 20:25
DLD, вы по диагонали читаете ответы? Написал же что нужно через Properties.Resources класс обращаться.
1
3257 / 3273 / 556
Регистрация: 17.02.2019
Сообщений: 5,182
21.05.2023, 20:31
Цитата Сообщение от DLD Посмотреть сообщение
Все равно ошибка:
C#
1
pictureBox1.Image = Properties.Resources.Restart; // Restart - это имя рисунка в ресурсах
ну и ответ дал OwenGlendower в посте 4
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 20:40  [ТС]
OwenGlendower, работает вот такая перегрузка метода Bitmap() - проблем нет
C#
1
2
Bitmap bitmap = Properties.Resources.Button;
this.PictureBox1.Image = new Bitmap(bitmap);
Подскажите, пожалста как использовать вместо этого вот такую перегрузку метода Bitmap() ?
C#
1
this.PictureBox1.Image = new Bitmap(Type type, string resource);
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 20:41
DLD, почему вы цепляетесь к этой перегрузке? Без неё можно обойтись
C#
1
this.PictureBox1.Image = Properties.Resources.Button;
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
21.05.2023, 20:57  [ТС]
OwenGlendower,
Цитата Сообщение от OwenGlendower Посмотреть сообщение
почему вы цепляетесь к этой перегрузке?
просто я не выполняю конкретный проект - а пока что обучаюсь . . . поэтому хотелось бы узнать разнообразие перегрузок этого метода

Добавлено через 1 минуту
January29, спасибо . . . так тоже работает
C#
1
this.PictureBox1.Image = new Bitmap(Properties.Resources.Button);
но мой вопрос был про другую перегрузку метода Bitmap()

Добавлено через 4 минуты
OwenGlendower, а может быть причина в том что в .Net Core эта перегрузка не применяется ?
цитата: Applies to
.NET Framework 4.8.1 and other versions
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
21.05.2023, 21:34
Лучший ответ Сообщение было отмечено DLD как решение

Решение

Цитата Сообщение от DLD Посмотреть сообщение
а пока что обучаюсь . . . поэтому хотелось бы узнать разнообразие перегрузок этого метода
Похвальное стремление. Редко встречается.

Цитата Сообщение от DLD Посмотреть сообщение
а может быть причина в том что в .Net Core эта перегрузка не применяется ?
Нет не в этом дело. В .NET Core она тоже есть.

Добавлено через 11 минут
Цитата Сообщение от DLD Посмотреть сообщение
Подскажите, пожалста как использовать вместо этого вот такую перегрузку метода Bitmap() ?
C#
1
this.PictureBox1.Image = new Bitmap(Type type, string resource);
Никогда не пользовался ей раньше, но получилось вот так:

1) Создаем проект Windows Forms (я создавал под .NET 7)

2) Добавляем в проект класс MyButton (не Button чтобы не было конфликтов с системным классом)

3) Добавляем в проект файл MyButton.bmp и ставим для него Build Action = Embedded Resource.

4) Вызываем конструктор Bitmap именно так как вам хотелось
C#
1
Bitmap b = new Bitmap(typeof(MyButton), "MyButton.bmp");
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
22.05.2023, 01:28  [ТС]
OwenGlendower, создал проект, добавил класс "public class MyButton{}", добавил в папку "Resources" файл "MyButton.bmp" и в его свойстве "Persistence" поставил галочку "Внедрено в RESX-файл". Теперь в методе
C#
1
Bitmap b = new Bitmap(typeof(MyButton), "MyButton.bmp");
программа не находит файл "MyButton.bmp", а когда первый аргумент "typeof(Resources)" то почему-то тоже не находит в папке "Resources"
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
22.05.2023, 08:01  [ТС]
OwenGlendower, а какой код должен быть в классе MyButton{} ?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
22.05.2023, 12:30
Цитата Сообщение от DLD Посмотреть сообщение
добавил в папку "Resources" файл "MyButton.bmp"
Не туда добавили. Нужно было просто в проект добавить рядом с классом.

Цитата Сообщение от DLD Посмотреть сообщение
и в его свойстве "Persistence" поставил галочку "Внедрено в RESX-файл"
Вас не смутило что в моей инструкции этого не было?

Цитата Сообщение от DLD Посмотреть сообщение
а какой код должен быть в классе MyButton{} ?
Какой угодно. Это роли не играет. Класс вообще может быть пустым.
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
22.05.2023, 13:24  [ТС]
OwenGlendower, ура . . . получилось
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18295 / 14219 / 5368
Регистрация: 17.03.2014
Сообщений: 28,896
Записей в блоге: 1
22.05.2023, 13:38
DLD, поздравляю.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2023, 13:38
Помогаю со студенческими работами здесь

Ошибка при присвоении Bitmap из ImageList в Image
Переношу свой тетрис с Delphi 7 на Delphi 10(Rad Studio 10). Не могу понять как мне заменить эту часть прорисовки изображений для этой...

Ошибка при компиляции: bitmap image is not valid
Доброго времени суток. Не поможете найти ошибку? Вот код begin bmp:=TBitmap.Create; jpgImg := TJPEGImage.Create; ...

стилилизация pictureBox1.Image
доброго времяни суток,помогите кусочком кода,как стилилизовать и дистилизовать pictureBox1.Image?)

Builder c++. Image->Canvas. bitmap Подогнать рисунок в рамки Image
Добрый день! Долго искал работу canvasa на image. Нашел следующую реализацию, но при добавлении на image изображение выходит за рамки....

поворот на определенный угол pictureBox1.Image
можно ли как то изображение в pictureBox1.Image повернть на 46 градусов ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru