#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. Ну, я подумал, что ваше предложение было полезным. Но если вы предпочитаете не представлять это как ответ, никаких проблем. Еще раз спасибо.