2017-06-12 6 views
1

WPFでは、VisualBrushを使ってpptの左側のようなことをすることができます。VisualBrushの失われた行を修正するには?

しかし、私は小さなsize.Likeに画像をたVisualBrushをズームするときたVisualBrushは長方形でラインを失ったことが参照してください。

enter image description here

あなたがたVisualBrushは、ボトムラインを失って見ることができます。

しかし、私が欲しいのは下の画像のようなものです:私は、画像を取得し、ズームする線形補間アルゴリズムを使用するようにRenderTargetBitmapを使用するのBitmapImageが鮮明画像を取得します使用しようとするとenter image description here

私はVisualBrushのアルゴリズムを変更できますか?それは近傍ピクセルアルゴリズムを使用するかもしれないと思います。

VisualBrushのような優れたパフォーマンスを持つプリントスクリーンアルゴリズムはありますか?私はViewBoxに私の検索キーを変更すると

することは、私はこの1つのように同じ質問を見つけることができます:how to avoid a single pixel line disappear in wpf?

+0

私はViewBoxが基本的な問題かもしれないと思います。 – lindexi

+0

参照:https://stackoverflow.com/questions/29552339/how-to-avoid-a-single-pixel-line-disappear-in-wpf – lindexi

答えて

1

をデフォルトのスケーリングアルゴリズムを使用してRenderTargetBitmapを拡張することができTransformedBitmapという名前のクラスがあります。私は私のデモで、この方法を試してみましたが、以下の結果を持っている

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)); 
} 

は、以下のコードを使用してください。あなたは、左上隅の小さな四角形が何も失われていないことに気づくかもしれません。

enter image description here

+0

Thx @walterlv、私は小さなサイズにズームすることができます。 [](https://i.stack.imgur.com/jfNbD.png)。しかし、それはそれがコントロールではないために入力を得るために使用することはできません。 – lindexi

関連する問題