Я хочу изменить размер изображения с помощью библиотеки GDI, чтобы при изменении размера изображения было больше, чем раньше, нет смешивания. (Как и при увеличении масштаба изображения в программе рисования)GDI + изменение размера для пиксельного увеличения
EG: Если мой образ широко 2px и 2px высокий
(белый, белый,
белый, черный)
, и я изменить его размер чтобы быть на 100% больше, оно 4px от 4px высотой
(белый, белый, белый, белый,
белый, белый, белый, белый,
белый, белый, черный, черный,
белый, белый, черный , черный)
Что такое InterpolationMode или Smoot hing mode (или другие свойства) графического объекта я могу использовать для достижения этого? Сочетания, которые я пробовал до сих пор, заставляют серый цвет появляться на тестовом изображении.
Вот код, который я использую
/// <summary>
/// Do the resize using GDI+
/// Credit to the original author
/// http://www.bryanrobson.net/dnn/Code/Imageresizing/tabid/69/Default.aspx
/// </summary>
/// <param name="srcBitmap">The source bitmap to be resized</param>
/// <param name="width">The target width</param>
/// <param name="height">The target height</param>
/// <param name="isHighQuality">Shoule the resize be done at high quality?</param>
/// <returns>The resized Bitmap</returns>
public static Bitmap Resize(Bitmap srcBitmap, int width, int height, bool isHighQuality)
{
// Create the destination Bitmap, and set its resolution
Bitmap destBitmap = new Bitmap((int)Convert.ToInt32(width), (int)Convert.ToInt32(height), PixelFormat.Format24bppRgb);
destBitmap.SetResolution(srcBitmap.HorizontalResolution, srcBitmap.VerticalResolution);
// Create a Graphics object from the destination Bitmap, and set the quality
Graphics grPhoto = Graphics.FromImage(destBitmap);
if (isHighQuality)
{
grPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
}
else
{
grPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; //? this doesn't work
grPhoto.InterpolationMode = InterpolationMode.NearestNeighbor; //? this doesn't work
}
// Do the resize
grPhoto.DrawImage(srcBitmap,
new Rectangle(0, 0, width, height),
new Rectangle(0, 0, srcBitmap.Width, srcBitmap.Height),
GraphicsUnit.Pixel);
grPhoto.Dispose();
return destBitmap;
}
Крис, спасибо, я попробую это позже. Поскольку я задал вопрос некоторое время назад, и это был просто личный проект, я отпустил его, поскольку он был «достаточно хорош». Ваш ответ выглядит правильно (еще не пробовал, как я уже сказал), и я надеюсь, что это поможет некоторым людям, которые находят этот вопрос. – NetHawk