Есть ли способ проверить, является ли Bitmap пустым в .NET?

#.net #bitmap #drawing #delphi-prism

#.net #bitmap #рисование #delphi-prism

Вопрос:

Я пытаюсь проверить объект bitmap, чтобы увидеть, установлен ли он или пуст. Похоже, в .NET нет такой функции. Я просмотрел сайт библиотеки MSDN и stackoverflow, и там очень мало упоминаний об этом в отношении .NET . Есть ли какой-либо другой способ сделать это в .NET?

Когда TBitmaap не содержит никакого изображения, его свойству Empty присваивается значение True

Мы будем признательны за любую помощь.

Комментарии:

1. Что вы имеете в виду под пустым? Нулевая ссылка?

2. Можете ли вы определить empty в этом случае? Для вас полностью прозрачное изображение считается пустым? Или вы просто хотите знать, имеет ли объект значение null?

3. @ oded и ekonoik Я имею в виду, установлен ли объект bitmap в качестве изображения или нет.

4. Ну, если для него не задано значение image, это будет null ссылка.

5. Ну, разве у вас не может быть экземпляра объекта bitmap, который все еще не настроен на изображение? Я полагаю, что в этом случае bitmap не был бы равен null.

Ответ №1:

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

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

 private Bitmap _bmp;

private void button1_Click(object sender, EventArgs e) {
  if (_bmp == null)
    _bmp = new Bitmap(@"c:example.bmp");
}
  

Вы можете создать из него расширение, например, так:

 public static class MyExensions {
  public static bool IsEmpty(this Bitmap bitmap) {
    return (bitmap == null);
  }
}
  

и это превратило бы ваш код в это:

 private void button1_Click(object sender, EventArgs e) {
  if (_bmp.IsEmpty())
    _bmp = new Bitmap(@"c:example.bmp");
}
  

Ответ №2:

Поправьте меня, если я ошибаюсь.

Исходя из Delphi win32, я знаю, что вы можете создать объект bitmap и позже установить его свойство image следующим образом.

 Bitmap:TBitmap;
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:example.bmp');
  

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

Что касается .NET, то при создании объекта bitmap вы должны передать изображение в качестве параметра его конструктору. Это означает, что конструктор создает экземпляр и устанавливает его изображение. Вы могли бы проверить, установлено ли разрешение изображения или ширина и высота, или нет, как указал Хенк Холтерман.

     image1 = new Bitmap(@"C:Documents and SettingsAll UsersDocumentsMy Musicmusic.bmp", true);
  

Комментарии:

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