C# 如何让ScrollViewer放大以查看单个像素?
我正在为Windows8.1制作一个应用程序,在这个应用程序中,能够放大并详细检查图像是很重要的。如果我打开位图并放大它看起来像 然而,当我将图像加载到我的应用程序中并使用ScrollViewer放大时,我得到了一张图片 因为它似乎试图插值像素值以进行某种抗锯齿 我怎样才能得到它,以便当我放大它时(尽可能地)显示图像的精确像素?特别是,我将图像用作包含在滚动查看器中的画布的背景C# 如何让ScrollViewer放大以查看单个像素?,c#,image,canvas,windows-runtime,pixel,C#,Image,Canvas,Windows Runtime,Pixel,我正在为Windows8.1制作一个应用程序,在这个应用程序中,能够放大并详细检查图像是很重要的。如果我打开位图并放大它看起来像 然而,当我将图像加载到我的应用程序中并使用ScrollViewer放大时,我得到了一张图片 因为它似乎试图插值像素值以进行某种抗锯齿 我怎样才能得到它,以便当我放大它时(尽可能地)显示图像的精确像素?特别是,我将图像用作包含在滚动查看器中的画布的背景 我环顾了一下这里和MSDN,发现了两个相关的问题,但它们似乎还没有解决我的确切问题 要做到这一点并不
我环顾了一下这里和MSDN,发现了两个相关的问题,但它们似乎还没有解决我的确切问题
<ScrollViewer x:Name="Scroller" ZoomMode="Enabled"
MinZoomFactor="0.1" MaxZoomFactor="20">
<canvas:CanvasControl x:Name="canvas" Draw="canvas_Draw" CreateResources="create"/>
</ScrollViewer>
Scroller.ZoomToFactor (0.1f);
我研究过但不起作用的其他方法
- 使画布非常大,并使用BitmapEncoder/BitmapDecoder,将插值模式设置为Nearest Neighbor,这样即使缩放到2倍大小,也会引入大量视觉瑕疵
- 渲染选项仅在WPF中可用,而在WinRT中不可用
也可以使用一些图像处理库简单地将位图放大10倍左右,然后使用它,但我最终还是使用了Win2D。我正在寻找Win2D并使用DirectX处理图像,但还没有找到一个可行的解决方案。我发现使用Win2D将图像渲染为10倍大小,然后简单地将scrollViewer的初始zoomfactor设置为0.1,这有点麻烦,但可能是最实际的修复方法。我想看看我是否可以不用Win2D完成这项工作。
Scroller.ZoomToFactor (0.1f);