2013-11-06 2 views
0

Я взял некоторый код и уменьшил его до нескольких строк, которые все еще воспроизводят ошибку, которую я получаю. В этом случае я беру изображение размером 448x298 и пытаюсь наложить его поверх белого фона 600x450.Почему этот код сокращает мое изображение?

Таким образом, я ожидаю получить изображение 600x450 с белым фоном, а оригинальное изображение поверх него начинается в правом верхнем углу. И я ожидаю, что исходное изображение останется прежним. Вместо того, чтобы исходное изображение будет от 448x298 до приблизительно (давать или принимать пиксель или два) 143x95

Вот сокращенный код, который делает это:

   System.Drawing.Image oImage = new Bitmap(600, 450); 
       Graphics oGraphic = Graphics.FromImage(oImage); 
       oGraphic.FillRectangle(Brushes.White, 0, 0, 600, 450); 
       oGraphic.DrawImage(image, new Point(0,0)); 
       return (Bitmap)oImage; 

ответ

1

Вы должны указать размер цели. Выбранный вами overload масштабирует изображение с исходного значения dpi до целевого значения dpi. Как объяснено в another question, вы должны сделать это:

System.Drawing.Image oImage = new Bitmap(600, 450); 
Graphics oGraphic = Graphics.FromImage(oImage); 
oGraphic.FillRectangle(Brushes.White, 0, 0, 600, 450); 
oGraphic.DrawImage(image, 0,0, image.Width, image.Height); 
return (Bitmap)oImage; 
+0

Спасибо, что сработал. – merk

Смежные вопросы