Обходной путь для ошибки сглаживания масштабирования PictureBox?

#winforms #windows-xp

#winforms #windows-xp

Вопрос:

A PictureBox , который имеет SizeMode.Zoom и увеличивает исходное изображение, добавляет белый цвет по нижнему и правому краям. У кого-нибудь есть простой проверенный обходной путь? Я полагаю, что ошибка в GDI , поэтому очевидная пользовательская перерисовка не исправит ее. В настоящее время я использую WPF, которого я хочу избежать.

Я даже соглашусь на клудж, который заменяет плохой белый на черный 🙂

Пример: из источника, имеющего один центральный белый пиксель, вместо этого:

введите описание изображения здесь

это дает это:

введите описание изображения здесь

Код:

 private void PictureBoxZoomBug()
{
  BitmapSource bitmapSource = 
    BitmapSource.Create(3, 3, 96, 96, System.Windows.Media.PixelFormats.Gray8, null,
     new byte[] { 0, 0, 0, 0, 0xFF, 0, 0, 0, 0 }, 3);
  TestDiscamImage.Source = bitmapSource;  // OK

  Bitmap bitmap;
  using (MemoryStream stream = new MemoryStream())
  {
    PngBitmapEncoder enc = new PngBitmapEncoder();
    enc.Frames.Add(BitmapFrame.Create(bitmapSource));
    enc.Save(stream);
    bitmap = new System.Drawing.Bitmap(stream);
  }
  TestDiscamCapture_pictureBox.Image = bitmap; // Extra white at bottom and right 
  }
 

Спасибо

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

1. Установите для свойства PictureBox.BackColor значение Black.

2. Боже мой, да, это прекрасно работает для клюга. Пожалуйста, введите это в качестве ответа, чтобы я мог принять его. Спасибо, Ганс.

3. Ну, я подумал, что ваше предложение было полезным. Но если вы предпочитаете не представлять это как ответ, никаких проблем. Еще раз спасибо.