C# 将(8*7像素)位图图像的大小调整为800 x 700
我创建了大约C# 将(8*7像素)位图图像的大小调整为800 x 700,c#,transform,bitmapimage,C#,Transform,Bitmapimage,我创建了大约100个png文件,这些文件的大小都是8*7像素,它们包含了微小的面 我想在WPF图像中显示其中一个面,为此,我创建了一个位图图像(使用Stretch.Fill选项)并将png放入其URI源,然后使用位图图像作为图像源 正如你所能想象的,它看起来有点奇怪,我所想做的就是得到一个更大的图片,而不是改变任何像素(比如当你使用windows image viewer并放大它时,没有质量损失,像素也没有改变,这意味着你不会失去图像的形状和颜色) 我确信有一种方法可以将“缩放”到我的8*7px
100个png
文件,这些文件的大小都是8*7像素
,它们包含了微小的面
我想在WPF图像
中显示其中一个面,为此,我创建了一个位图图像(使用Stretch.Fill
选项)并将png放入其URI源,然后使用位图图像作为图像源
正如你所能想象的,它看起来有点奇怪,我所想做的就是得到一个更大的图片,而不是改变任何像素(比如当你使用windows image viewer并放大它时,没有质量损失,像素也没有改变,这意味着你不会失去图像的形状和颜色)
我确信有一种方法可以将“缩放”
到我的8*7px
图片中,或者复制这些像素并再次绘制,但要更大一些
我真的很抱歉我的英语不好,我仍然希望你能理解我,并能帮助我
事先非常感谢,真的没什么可说的了。我想结果图像看起来相当模糊。原因不是质量的“损失”,而是推断出原始图像中根本不存在的细节。对于照片和类似的图像,通常最好使用平滑插值,所以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本机方法是使用
渲染。BitmapScalingMode=“NearestNeighbor”
。如果您是动态创建图像,这对应于RenderOptions.SetBitmapScalingMode(bmp,BitmapScalingMode.NearestNeighbork)
当然。非常感谢,我马上就来试试