• 1000 Я использую графический объект для этого, чтобы использовать
интерполяцию NearestNeighbor для точного повышения масштаба отдельных пикселей.
Я использую графический объект временного изображения по умолчанию, которое находится в PictureBox
s Компонент «Изображение» на Form.Load
, размер которого идеален по ширине и высоте для сохранения правильного соотношения сторон исходного растрового изображения.
Вот соответствующий код:
private void Form1_Load(object sender, EventArgs e)
{
bmp = new Bitmap(16, 9, PixelFormat.Format24bppRgb);
rnd = new Random();
GenerateImage();
}
private void GenerateImage()
{
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
int num = rnd.Next(2);
if (num == 0)
{
bmp.SetPixel(x, y, Color.White);
}
else
{
bmp.SetPixel(x, y, Color.Gold);
}
}
}
Bitmap image = new Bitmap(picOutput.Image);
grp = Graphics.FromImage(image);
grp.InterpolationMode = InterpolationMode.NearestNeighbor;
grp.DrawImage(
bmp,
new Rectangle(0, 0, image.Width, image.Height),
0,
0,
bmp.Width,
bmp.Height,
GraphicsUnit.Pixel
);
grp.Dispose();
picOutput.Image = image;
}
Проблема в том, что Bitmap
кажется нарисованным неправильно. Около половины пикселя от исходного Bitmap
обрезается на левом и верхнем краях растрового изображения при отображении через PictureBox
, и эта примерно половина пикселя отображается как исходное изображение по умолчанию на правом и нижнем краях. Это почти как если бы Bitmap
был смещен вверх и влево при рисовании графическим объектом, он не полностью закрывает исходное изображение по умолчанию, как предполагалось.
Моей первой мыслью было PictureBox
s SizeMode, который по-прежнему установлен на «Нормальный», но ни один из них не решает проблему. Здесь - изображение проблемы. Черные края справа и внизу являются частью временного изображения по умолчанию (изображение, из которого я использовал графику), которое полностью черное и покрывает всю область PictureBox
.
Может ли кто-нибудь дать некоторое представление?