首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复VisualBrush丢失的线路?

如何修复VisualBrush丢失的线路?
EN

Stack Overflow用户
提问于 2017-06-12 08:55:44
回答 1查看 317关注 0票数 1

在WPF中,我们可以使用VisualBrush来做一些事情,比如ppt的左侧。

但是,当我将VisualBrush放大到一个小size.Like图像时,VisualBrush可能会丢失矩形的线条:

你可以看到VisualBrush失去了底线。

但我想要的是下面的图片:

当我尝试使用BitmapImage,使用RenderTargetBitmap获取图像,并使用线性插值算法缩放,将得到清晰的图像。

我能改变VisualBrush的算法吗?我认为它可以使用邻域像素算法。

是否有像VisualBrush这样性能良好的printscreen算法?

当我将搜索键更改为ViewBox时,可以找到与以下问题相同的问题:how to avoid a single pixel line disappear in wpf?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-12 13:16:17

有一个名为TransformedBitmap的类,它可以使用默认的缩放算法缩放您的RenderTargetBitmap

使用以下代码:

代码语言:javascript
复制
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));
}

我已经在我的演示中尝试过这个方法,并得到了下面的结果。您可能注意到左上角的小矩形没有丢失任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44495238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档