我创建了大约100 png
个8*7 pixels
个文件,它们包含很小的面孔。
我想在WPF Image
中显示其中一个面,为此,我创建了一个Bitmapimage(使用Stretch.Fill
选项)并将png放入它的urisource,然后我使用bitmapimage作为图像源。
你可以想象,它看起来有点奇怪,我想做的就是获得更大的画面,而不是改变任何像素(比如当你使用Windows图像浏览器并放大它时,没有质量)丢失和像素不会改变,这意味着你不会失去图像的形状和颜色)
我确定可以"zoom"
进入我的8*7px
图片,或复制这些像素并再次绘制,但更大。
我真的很抱歉我的英语不好,我仍然希望你能理解我并且能够提供帮助。
非常感谢你,没有什么可说的了。
答案 0 :(得分:0)
我认为生成的图像看起来相当模糊。原因不是质量的“损失” - 而是推断出原始图像中不存在的细节。对于照片和类似图像,使用一些平滑插值通常是一个更好的主意,这就是WPF所做的。
我不确定在WPF中是否有更好的方法(可能),但您可以手动创建一个新的位图,而不需要像这样的平滑插值:
var src = new Bitmap("D:\\Untitled.png");
var dst = new Bitmap(800, 700);
using (var gr = Graphics.FromImage(dst))
{
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
gr.DrawImage(src, new Rectangle(0, 0, 800, 700));
}
dst.Dump();
dst
变量将使用“最近邻居”插值调整大小的位图 - “像素化”外观。
修改强>
WPF原生方式是使用RenderOptions.BitmapScalingMode="NearestNeighbor"
。如果您是动态创建图像,那么当然对应于RenderOptions.SetBitmapScalingMode(bmp, BitmapScalingMode.NearestNeighbor)
。