在WPF中,我们可以使用VisualBrush来做一些事情,比如ppt的左侧。
但是,当我将VisualBrush放大到一个小size.Like图像时,VisualBrush可能会丢失矩形的线条:

你可以看到VisualBrush失去了底线。
但我想要的是下面的图片:

当我尝试使用BitmapImage,使用RenderTargetBitmap获取图像,并使用线性插值算法缩放,将得到清晰的图像。
我能改变VisualBrush的算法吗?我认为它可以使用邻域像素算法。
是否有像VisualBrush这样性能良好的printscreen算法?
当我将搜索键更改为ViewBox时,可以找到与以下问题相同的问题:how to avoid a single pixel line disappear in wpf?
发布于 2017-06-12 13:16:17
有一个名为TransformedBitmap的类,它可以使用默认的缩放算法缩放您的RenderTargetBitmap。
使用以下代码:
public static BitmapSource ToBitmapSource(this Visual visual, Size size)
{
var bounds = VisualTreeHelper.GetDescendantBounds(visual);
var width = (int) Math.Round(bounds.Width);
var height = (int) Math.Round(bounds.Height);
var bitmap = new RenderTargetBitmap(width, height, 96.0, 96.0, PixelFormats.Pbgra32);
bitmap.Render(visual);
return new TransformedBitmap(bitmap, new ScaleTransform(size.Width / width, size.Height / height));
}我已经在我的演示中尝试过这个方法,并得到了下面的结果。您可能注意到左上角的小矩形没有丢失任何东西。

https://stackoverflow.com/questions/44495238
复制相似问题