Для моего текущего приложения WPF мне нужно уменьшить масштаб некоторых System.Drawing.Image
(объектов, которые я загружаю из файлов PNG (некоторые из них с прозрачным фоном). Я пробовал несколько подходов для изменения размера изображений, и все они работали нормально с точки зрения после этого изображение меньшего размера.Но, к сожалению, все они делают изображения менее прозрачными.
Моя последняя попытка состояла в том, чтобы использовать внешнюю библиотеку ImageResizer, чтобы выполнить работу, поскольку я ожидал, что она легко справится с этой проблемой, но у меня все еще есть та же проблема: исходное изображение отображается с прозрачным фоном; Отображаемое изображение с измененным размером отображается с черным фоном.
Вот мой код для использования библиотеки ImageResizer:
ImageResizer.Instructions inst = new ImageResizer.Instructions("width=" + newWidth.ToString() + ";height=" + newHeight.ToString() + ";format=png;mode=max");
ImageResizer.ImageJob job = new ImageResizer.ImageJob(originalImage, typeof(System.Drawing.Bitmap), inst);
job.Build();
return job.Result as System.Drawing.Image;
Это два моих других подхода, которые также в основном дают тот же результат (размер изображения изменен: пока; прозрачность сохранена: нет):
return originalImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero); // Transparency gets lost
return new System.Drawing.Bitmap(originalImage, new System.Drawing.Size(newWidth, newHeight)); // Transparency gets lost
Любые идеи о том, что мне нужно сделать, чтобы сохранить прозрачность при изменении размера?
С Уважением
Ральф