【发布时间】:2018-11-10 06:50:41
【问题描述】:
当我将两个像素位图转换为图像位图时,我将其更改为具有许多像素的普通图像并将其转换为渐变(黑色和白色像素现在从黑色到灰色渐变为白色)
public static BitmapImage Bitmap2BitmapImage(this Bitmap bitmap)
{
using (var memory = new MemoryStream())
{
bitmap.Save(memory, ImageFormat.Png);
memory.Position = 0;
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memory;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
bitmapImage.Freeze();
return bitmapImage;
}
}
【问题讨论】:
-
那么你的问题是什么?您是否希望生成的 BitmapImage 也为 2 像素宽?如果是,您可以在 bitmapImage 上设置 DecodePixelWidth/DecodePixelHeight 属性。
-
我不需要 2 个像素的图像,当我创建两个像素的位图时,一个像素的黑色第二个白色,然后我将它转换为 imagebitmap,我想要得到一半黑色一半白色的图像,但我得到了从黑色到白色的颜色渐变(你知道边界不清晰,颜色从一种平滑地变化到另一种)
-
也许这会对你有所帮助:stackoverflow.com/questions/2381012/…
-
您关注的是错误的问题。回到生成 Bitmap 对象的代码。用于生成它的 Graphics.InterpolationMode 和 Graphics.PixelOffsetMode 属性对于放大到更大尺寸的非常小的位图来说非常重要。也许是 Graphics.SmoothingMode,没什么可看的,很难分辨。
-
那么如何关闭BitmapImage中的SmoothingMode呢?