2017-02-28 4 views
1

私はskiaを使用して、SwapChainPanel(ANGLEを介して)の描画を行い、すべてうまくいっています。しかし、私が抱えている1つの問題は、コンテンツが高いDPI画面で拡大縮小されていることです。UWP SwapChainPanel内容Blurry/Scaled

私のマシンには、高解像度(x2)と通常(x1)の画面があります。パネルの内容は1xのディスプレイ上で大きく見えますが、上にドラッグすると、ウィンドウのサイズが変更され、内容が拡大されます。どのようにしてパネルに内容の縮尺を告げるのではなく、むしろ私の側を調整させるように指示するのですか?その後、RenderTransformプロパティを使用してScaleTransform(例:0.5)を設定します。

私の現在のソリューションは、望ましいスケール(panel.Width * 2など)で私のレンダを作成することです。

コンテンツが滑らかで鮮明に表示されるようになりましたが、レイアウトが影響を受けるようになりました。レンダリングトランスフォームはパネルを「サイズ変更」しているためです。

これを行う正しい方法は何ですか?

EDIT

これは、私は、バッファを作成するためにやっているものです:

https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.UWP/AngleSwapChainPanel.cs#L199-L285

答えて

1

あなたは、本質的にIDXGISwapChain2.SetMatrixTransformを使用してスワップチェーンパネル組成規模の逆数であることをDXGISwapChain上のスケールを設定する必要があります方法:

SwapChainPanel panel = ...; 
IDXGISwapChain2 swapChain = ...; 

DXGI_MATRIX_3X2_F scale; 
inverseScale._11 = 1.0f/swapChainPanel.CompositionScaleX; 
inverseScale._22 = 1.0f/swapChainPanel.CompositionScaleY; 
var hr = swapChain.SetMatrixTransform(ref scale); 
if (hr < 0) 
    Marshal.ThrowExceptionForHR(hr); 

私はkしかし、あなたが使っているライブラリを通してswapchainオブジェクトリファレンスを得る方法はまったく正確です。