Windows forms очистить picturebox

Обновлено: 04.07.2024

Я хотел бы изменить этот проект массива PictureBox. я хочу поставить кнопку сброса, чем очистит все PictureBox Array , которые он создал
, скорее всего, форма снова будет пустой, как и с самого начала.

это часть его кода;

как я могу это сделать?

4 ответа

Вы можете просто установить изображение на null:

Я буду следовать этим шагам, чтобы быть уверенным, что все будет хорошо :

Предполагая, что в this.Backpanel нет других дочерних элементов управления (элемент управления контейнером, который фактически отображает ваши изображения), это, вероятно, сработает:

Если вы рисуете на pictureBox и хотите очистить его:

После этого вы можете снова рисовать на элементе управления. Я надеюсь, что это может кому-то помочь.

Похожие вопросы:

Ни один из кодов, которые я видел до сих пор, чтобы очистить picturebox, не достиг того, что мне было нужно. Я хотел очистить picturebox, чтобы нарисовать что-то новое на фоне blank. Вот мой код.

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

У меня есть форма с picturebox, которая позволит нарисовать картинку свободной рукой. Я добавил инициализацию изображения в form_load и событие click на кнопку Очистить. Когда я нажимаю кнопку.

Я хочу очистить изображение PictureBox, поэтому я делаю этот код: TransparentPictureBox.Image = Nothing , изображение не исчезает, и я получаю все новое изображение, перекрывающее предыдущее. Как я.

У меня есть picturebox, где я могу загрузить изображение в его функцию .backgroundimage, и теперь у меня есть кнопка, которая должна очистить его, но не делает этого. Я пробовал использовать этот.

Здравствуйте, у меня возникли проблемы с рисованием в picturebox. Я пытаюсь нарисовать поверх коробки с картинками. picturebox содержит изображение. Я рисую синусоидальную волну, используя метод.

Первоначально я буду загружать изображения(скажем, 20 изображений) в picturebox из указанной папки через выпадающий список selection from combobox, они обычно загружаются в picturebox. Проблема, с.

Я хотел бы очистить pictureBox после нажатия на кнопку 'Encode', чтобы сохранить его как новый файл изображения в моем проекте. Я хотел бы очистить поля в форме после того, как пользователь сохранит.

Я работаю в приложении, где есть Conbobox и Picturebox. Пользователь выбирает путь, и conbobox загружает пути к 2000 изображениям и отображает первое. Когда пользователь меняет индекс conbobox, отображаемое изображение изменяется, но я не знаю, как удалить изображение в картинке.

Если я просто перезаписываю изображение, оно не выполняет свою работу, так как при многократном повторении программа вылетает из-за памяти. Как мне удалить изображение внутри картинки?

Решение

Вы должны избавиться от старый образ. Если вы забудете это сделать, то, скорее всего, вашей программе не хватит неуправляемой памяти, когда сборщик мусора будет запускаться недостаточно часто. Растровые объекты довольно малы, вы можете выделить тысячи из них, даже не запуская GC, но они могут потреблять много неуправляемой памяти для пиксельных данных. Вы располагаете объекты в C ++ / CLI с помощью удалять оператор, он вызывает IDisposable :: Dispose ().

Обратите внимание, что FileStream, который вы используете, также является одноразовым объектом. Для этого необходимо, чтобы поток оставался открытым во время использования растрового изображения, а затем закрывался. Вы правильно не распорядились потоком, но забыли закрыть его. Слишком сложно разобраться, гораздо проще использовать конструктор Bitmap, который принимает строку для пути к файлу, поэтому класс Bitmap управляет самим основным потоком. Fix:

Другие решения

Это не работает, потому что вы пытаетесь вызвать деструктор класса, а не экземпляра. Кроме того, вам не нужно называть это как System::Drawing::Bitmap находится под контролем сборщика мусора, поэтому финализатор (! Bitmap ()) будет вызываться автоматически, если на него больше нет ссылок.

Что вы можете сделать, если вы хотите закрыть его в картинке

Кстати. Ваш код не чистый C ++, но C ++ / Cli, поэтому я добавил тег

Сначала установите нулевой указатель на свойство Image и обновите pictureBox, как показано ниже,

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Представляет элемент управления Windows "поле рисунка", предназначенный для отображения рисунков.

Примеры

В следующем примере кода показано, как можно задать изображение и изменить размер области отображения окна изображения. В этом примере требуется, ShowMyImage чтобы он вызывался в существующей форме, а System.Drawing пространство имен было добавлено в исходный код для формы.

Комментарии

Обычно PictureBox используется для вывода графических изображений из файла точечного рисунка, метафайла, значка, JPEG, GIF или PNG.

Задайте Image для свойства значение, которое нужно Image отобразить во время разработки или во время выполнения. Можно также указать образ, задав ImageLocation свойство и загружая образ синхронно с помощью Load метода или асинхронно с помощью LoadAsync метода.

Если вы хотите использовать одно и то же изображение в нескольких PictureBox элементах управления, создайте клон изображения для каждого из них PictureBox . Доступ к тому же изображению из нескольких элементов управления приводит к возникновению исключения.

SizeModeСвойство, для которого заданы значения в PictureBoxSizeMode перечислении, управляет обрезкой и положением изображения в области просмотра. Можно изменить размер области просмотра во время выполнения с помощью ClientSize Свойства.

По умолчанию PictureBox элемент управления отображается без границ. Можно предоставить стандартную или трехмерную границу с помощью BorderStyle свойства, чтобы отличить поле изображения от остальной части формы, даже если оно не содержит изображения. Не PictureBox является выбираемым элементом управления, что означает, что он не может получать фокус ввода.

Конструкторы

Инициализирует новый экземпляр класса PictureBox.

Свойства

Получает объект AccessibleObject, назначенный элементу управления.

Возвращает или задает описание выполняемого по умолчанию действия элемента управления для использования клиентскими приложениями со специальными возможностями.

Возвращает или задает описание элемента управления, используемого клиентскими приложениями со специальными возможностями.

Возвращает или задает имя элемента управления, используемого клиентскими приложениями со специальными возможностями.

Возвращает или задает доступную роль элемента управления.

Возвращает или задает границы контейнера, с которым связан элемент управления, и определяет способ изменения размеров элемента управления при изменении размеров его родительского элемента.

Возвращает или задает местоположение, в котором выполняется прокрутка этого элемента управления в ScrollControlIntoView(Control).

Данное свойство не применимо к этому классу.

Возвращает или задает цвет фона для элемента управления.

Возвращает или задает фоновое изображение, отображаемое на элементе управления.

Возвращает или задает макет фонового изображения в соответствии с перечислением ImageLayout.

Возвращает или задает значение BindingContext для элемента управления.

Указывает стиль границы элемента управления.

Возвращает расстояние в пикселях между нижней границей элемента управления и верхней границей клиентской области контейнера.

Возвращает или задает размер и местоположение (в пикселях) элемента управления, включая его неклиентские элементы, относительно его родительского элемента управления.

Получает значение, указывающее, можно ли для свойства ImeMode установить активное значение с целью включения поддержки IME.

Возвращает значение, указывающее, может ли элемент управления получать фокус.

Определяет, могут ли вызываться события в элементе управления.

Возвращает значение, указывающее, доступен ли элемент управления для выбора.

Возвращает или задает значение, указывающее, была ли мышь захвачена элементом управления.

Возвращает прямоугольник, представляющий клиентскую область элемента управления.

Возвращает или задает высоту и ширину клиентской области элемента управления.

Возвращает название организации или имя создателя приложения, содержащего элемент управления.

Возвращает объект IContainer, который содержит коллекцию Component.

Возвращает значение, указывающее, имеет ли элемент управления или один из его дочерних элементов фокус ввода в настоящий момент.

Возвращает или задает контекстное меню, связанное с элементом управления.

Возвращает или задает объект ContextMenuStrip, сопоставленный с этим элементом управления.

Возвращает коллекцию элементов управления, содержащихся в элементе управления.

Возвращает значение, указывающее, был ли создан элемент управления.

Возвращает или задает курсор, отображаемый, когда указатель мыши находится на элементе управления.

Возвращает привязки данных для элемента управления.

Возвращает или задает курсор по умолчанию для элемента управления.

Получает значение, определяющее режим редактора методов ввода для PictureBox.

Возвращает размер пустого пространства в пикселях между элементами управления, которое определено по умолчанию.

Возвращает длину и высоту в пикселях, которые были указаны в качестве максимального размера элемента управления.

Возвращает длину и высоту в пикселях, которые были указаны в качестве минимального размера элемента управления.

Возвращает внутренние промежутки в содержимом элемента управления в пикселях.

Получает размер элемента управления по умолчанию.

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

Получает значение DPI для устройства, на котором сейчас отображается элемент управления.

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

Получает значение, указывающее, находится ли базовый класс Control в процессе удаления.

Возвращает или задает границы элемента управления, прикрепленные к его родительскому элементу управления, и определяет способ изменения размеров элемента управления с его родительским элементом управления.

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

Возвращает или задает значение, указывающее, может ли элемент управления отвечать на действия пользователя.

Возвращает или задает изображение, предназначенное для отображения при возникновении ошибки во время загрузки изображения или при отмене загрузки.

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

Возвращает значение, указывающее, имеется ли на элементе управления фокус ввода.

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

Возвращает или задает высоту шрифта элемента управления.

Возвращает дескриптор окна, с которым связан элемент управления.

Возвращает значение, указывающее, содержит ли элемент управления один или несколько дочерних элементов.

Возвращает или задает высоту элемента управления.

Получает или задает изображение, отображаемое элементом управления PictureBox.

Получает или задает путь или URL-адрес изображения для отображения в PictureBox.

Возвращает или задает режим редактора метода ввода, поддерживаемый данным элементом управления.

Получает или задает режим IME элемента управления.

Получает или задает изображение, отображаемое в элементе управления PictureBox при загрузке основного изображения.

Возвращает значение, указывающее, следует ли вызывающему оператору обращаться к методу invoke во время вызовов метода из элемента управления, так как вызывающий оператор находится не в том потоке, в котором был создан элемент управления.

Возвращает или задает значение, указывающее, является ли элемент управления видимым для приложений со специальными возможностями.

Указывает, является ли один из предков этого элемента управления узлом и этим сайтом в Десигнмоде. Это свойство доступно только для чтения.

Возвращает значение, указывающее, был ли удален элемент управления.

Возвращает значение, указывающее, имеется ли у элемента управления связанный с ним дескриптор.

Возвращает значение, указывающее, отображается ли зеркально элемент управления.

Получает кэшированный экземпляр механизма размещения элемента управления.

Возвращает или задает расстояние в пикселях между левой границей элемента управления и левой границей клиентской области его контейнера.

Возвращает или задает координаты левого верхнего угла элемента управления относительно левого верхнего угла его контейнера.

Возвращает или задает расстояние между элементами управления.

Возвращает или задает размер, являющийся верхней границей, которую может указать метод GetPreferredSize(Size).

Возвращает или задает размер, являющийся нижней границей, которую может указать метод GetPreferredSize(Size).

Возвращает или задает имя элемента управления.

Возвращает или задает заполнение в элементе управления.

Возвращает или задает родительский контейнер элемента управления.

Возвращает размер прямоугольной области, в которую может поместиться элемент управления.

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

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

Возвращает значение, указывающее, осуществляет ли в настоящий момент элемент управления повторное создание дескриптора.

Возвращает или задает область окна, связанную с элементом управления.

Это свойство устарело.

Возвращает или задает значение, указывающее, перерисовывается ли элемент управления при изменении размеров.

Возвращает расстояние в пикселях между правой границей элемента управления и левой границей клиентской области его контейнера.

Возвращает или задает значение, указывающее, выровнены ли компоненты элемента управления для поддержки языков, в которых используется направление письма справа налево.

Получает значение, определяющее масштабирование дочерних элементов управления.

Возвращает значение, указывающее, должен ли элемент управления отображать прямоугольники фокуса.

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

Возвращает или задает местонахождение элемента управления.

Возвращает или задает высоту и ширину элемента управления.

Указывает способ отображения изображения.

Возвращает или задает значение индекса перехода по TAB.

Возвращает или задает значение, указывающее, может ли пользователь переместить фокус на элемент управления при помощи клавиши TAB.

Возвращает или задает объект, содержащий данные об элементе управления.

Получает или задает текст объекта PictureBox.

Возвращает или задает расстояние в пикселях между верхней границей элемента управления и верхней границей клиентской области его контейнера.

Получает родительский элемент управления, не имеющий другого родительского элемента управления Windows Forms. Как правило, им является внешний объект Form, в котором содержится элемент управления.

Возвращает или задает значение, указывающее, следует ли использовать курсор ожидания для текущего элемента управления и всех дочерних элементов управления.

Возвращает или задает значение, указывающее, отображаются ли элемент управления и все его дочерние элементы управления.

Возвращает или задает значение, указывающее, синхронно ли загружено изображение.

Возвращает или задает ширину элемента управления.

Данное свойство не применимо к этому классу.

Методы

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

Выполняет указанный делегат асинхронно в потоке, в котором был создан базовый дескриптор элемента управления.

Выполняет указанный делегат асинхронно в потоке, в котором был создан базовый дескриптор элемента управления.

Выполняет указанный делегат асинхронно с указанными аргументами в потоке, в котором был создан базовый дескриптор элемента управления.

Помещает элемент управления в начало z-порядка.

Отменяет асинхронную загрузку изображения.

Возвращает значение, указывающее, является ли указанный элемент управления дочерним элементом.

Создает для элемента управления новый объект с поддержкой специальных возможностей.

Вызывает принудительное создание видимого элемента управления, включая создание дескриптора и всех видимых дочерних элементов.

Создает новый экземпляр коллекции элементов управления для данного элемента управления.

Создает объект Graphics для элемента управления.

Создает дескриптор для элемента управления.

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

Удаляет дескриптор, связанный с элементом управления.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом PictureBox, а при необходимости освобождает также управляемые ресурсы.

Начинает операцию перетаскивания.

Поддерживает отрисовку в указанном точечном рисунке.

Получает возвращаемое значение асинхронной операции, представленное переданным объектом IAsyncResult.

Определяет, равен ли указанный объект текущему объекту.

Возвращает форму, в которой находится элемент управления.

Устанавливает фокус ввода на элемент управления.

Получает указанный объект AccessibleObject.

Получает значение, указывающее, как будет вести себя элемент управления, когда его свойство AutoSize включено.

Возвращает дочерний элемент управления, имеющий указанные координаты.

Возвращает дочерний элемент управления, расположенный по указанным координатам, определяя, следует ли игнорировать дочерние элементы управления конкретного типа.

Возвращает следующий объект ContainerControl в цепочке родительских элементов управления данного элемента.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает следующий или предыдущий элемент среди дочерних элементов управления в последовательности клавиши TAB.

Вычисляет размер прямоугольной области, в которую помещается элемент управления.

Возвращает границы, внутри которых масштабируется элемент управления.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает значение указанного бита стиля элемента управления для данного элемента управления.

Определяет, находится ли элемент управления на верхнем уровне.

Возвращает объект Type для текущего экземпляра.

Скрывает элемент управления от пользователя.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

Вызывается после добавления элемента управления в другой контейнер.

Делает недействительной всю поверхность элемента управления и вызывает его перерисовку.

Выполняет указанный делегат в том потоке, которому принадлежит базовый дескриптор окна элемента управления.

Выполняет указанный делегат в том потоке, которому принадлежит базовый дескриптор окна элемента управления.

Выполняет указанный делегат в том потоке, которому принадлежит основной дескриптор окна элемента управления, с указанным списком аргументов.

Выполняет указанный делегат в том потоке, которому принадлежит базовый дескриптор окна элемента управления.

Вызывает событие GotFocus для указанного элемента управления.

Вызывает событие LostFocus для указанного элемента управления.

Вызывает событие Click для указанного элемента управления.

Вызывает событие Paint для указанного элемента управления.

Вызывает событие PaintBackground для указанного элемента управления.

Определяет, является ли символ входным символом, который распознается элементом управления.

Определяет, является ли заданная клавиша обычной клавишей ввода или специальной клавишей, нуждающейся в предварительной обработке.

Отображает изображение, указанное в свойстве ImageLocation объекта PictureBox.

Задает значение свойства ImageLocation, равное указанному URL-адресу, и отображает указанное изображение.

Асинхронно загружает изображение.

Асинхронно загружает изображение в указанное расположение.

Преобразует логическое значение DPI в эквивалентное значение DPI DeviceUnit.

Преобразует размер из логических единиц в единицы устройства путем его масштабирования к текущему DPI и округлением вниз до ближайшего целого значения ширины и высоты.

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

Вызывает событие Invalidated, чтобы сделать недействительной указанную область элемента управления.

Рисую игру на форме, проект Windows Forms C++. Вся графика выводится на PictureBox. Но после 5-15 минут игры начинаются тормоза, причем не постоянные, а рывками, то тормозит, то не тормозит, после начала тормозов периодичность такая: 5 секунд все нормально, другие 5 секунд такие чувство, что интервал таймера(это у меня главный цикл программы) увеличивается в 2-3 раза, и потом опять на 5 секунд отпускает. При перезапуске приложения тормоза не исчезают. Лечится это только перезагрузкой компа. Все динамически создаваемые объекты удаляются. Ума не приложу в чем дело, помогите.

конфигурация компа: intel core i5 2600k, 8 Gb DDR3, GeForce GTX 670, исполняемый файл и текстуры находятся на SSD накопителе. Windows 7 Ultimate x64, Visual Studio 2012.

очень похоже на перегрев процессора. когда такое происходит, он сбрасывает частоты как раз на несколько секунд, чтобы охладиться, потом снова молотит в полную мощность. попробуй поставить Sleep(10) или аналог, чтобы подтвердить или опровергнуть эту гипотезу, снизив нагрузку на центральный процессор.

Suslik
> очень похоже на перегрев процессора. когда такое происходит, он сбрасывает
> частоты как раз на несколько секунд, чтобы охладиться, потом снова молотит в
> полную мощность. попробуй поставить Sleep(10) или аналог, чтобы подтвердить или
> опровергнуть эту гипотезу, снизив нагрузку на центральный процессор.

я было так подумал, но, как я уже сказал, лечится это только перезагрузкой компа, т.е. если я ставлю игру на паузу и тем самым останавливаю главный цикл игры, прекращая все вычисления и рендеринг, и подожду 5 минут и даже больше, лаги не исчезают. Да и интервал таймера у меня установлен в 10 мс.

SoulSharer
> это скорее всего Garbage Collection проблема.

судя по инфе в диспетчере задач, память, выделенная под процесс, как-то странно скачет каждую секунду, иногда пределы скачков бывают от 80 мб до 500 мб(на 420 мбайт). Не понятно. Хотя что такое эти 500 Мб при общей памяти 8 Гб и как это может ТАК влиять на производительность - Тоже не понятно.

Atlant1Q
> судя по инфе в диспетчере задач, память, выделенная под процесс, как-то странно
> скачет каждую секунду, иногда пределы скачков бывают от 80 мб до 500 мб(на 420
> мбайт). Не понятно. Хотя что такое эти 500 Мб при общей памяти 8 Гб и как это
> может ТАК влиять на производительность - Тоже не понятно.

Ооо, это явно GB, мусор собирается до 500 мб, как вы говорите, а потом сливается в какое-то время. Почитайте таки про Garbage Collection, чтобы решить проблему.

-добавление
И про выделение памяти в цикле игры тоже найдите обсуждения/статьи (поможет)

Читайте также: