2017-01-25 13 views
1

私はSkiaSharpを使用してWPFでテキストを描画しています。WPFのSkiaSharpでぼやけたテキスト

https://github.com/8/SkiaSharp-Wpf-Example

http://lostindetails.com/blog/post/SkiaSharp-with-Wpf

テキストを見ることができるようにシャープではありません。

enter image description here

あなたは簡単にシャープであるタイトルにメインウィンドウのテストでテキストを比較していることに気づくことができます。

何が問題なのですか?

+1

ビットマップを拡大するとかなり見やすくなります。ウィンドウタイトルはClearTypeアンチエイリアスを使用します。これは、デスクトップオペレーティングシステムを作成する会社のデフォルトです。ウィンドウテキストは、モバイルオペレーティングシステムを作成する会社のデフォルトであるグレイスケールのアンチエイリアスでレンダリングされます。猫と醜い犬。 [これをチェック](https://github.com/mono/SkiaSharp/issues/141)。 –

+0

ありがとうHans。私はまだ解決策を見つけようとしています。 – Vahid

答えて

2

十分な解像度でレンダリングしていない可能性があります。私はSurfaceBookのディスプレイでこれを体験しますが、私の外部ディスプレイでは体験しません。実際に必要とするよりも大きな表面を実際に作成する必要があります。例えば、私のSurfaceBookは300%のスケーリングを持っているので、私は最初のウィンドウの幅を取得した後、3を掛けする必要があります。

https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs#L57-L61

var m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; 
var dpiX = m.M11; 
var dpiY = m.M22; 
var width = (int)(ActualWidth * dpiX); 
var height = (int)(ActualHeight * dpiY); 

代わりにこれを自分で行うことを有していると、あなたはNuGetで事前に作成されたビューを利用することができます:https://www.nuget.org/packages/SkiaSharp.Views

あなたはその後、ちょうどこのサンプルのようにSKElementにドロップすることができます。

https://github.com/mono/SkiaSharp/blob/master/samples/WPFSample/WPFSample/MainWindow.xaml#L28

<views:SKElement x:Name="canvas" PaintSurface="OnPaintCanvas" /> 
+0

こんにちはMatthew、良いニュースをありがとう。私はgitから最新のバージョンをダウンロードしましたが、私の解決策は構築できません。 SK3dViewタイプが見つかりません。 – Vahid

+1

https://github.com/mono/SkiaSharp/releases/tag/v1.56.0からサンプルをダウンロードするだけです。マスターブランチが不安定で、構築する場合はv1.56.0タグを使用してください。 – Matthew

+0

Thanks Matthew。私が家にいるとき、私はそれらを見るでしょう。 Skiaは本当に有望ですね。私はそれが仕事を得ることができることを望む。 – Vahid

関連する問題