2017-02-28 122 views
1

我使用skiaSwapChainPanel(通过ANGLE)上绘图,并且一切进展顺利。但是,我遇到的一个问题是内容在高DPI屏幕上被缩放。UWP SwapChainPanel内容模糊/缩放

我在我的机器上有一个高分辨率(x2)和一个普通(x1)屏幕。面板的内容在1x显示器上看起来很棒,但是当我将其拖动时,窗口将调整大小并缩放内容。我如何告诉专家组不要调整内容,而是让我调整自己的方向?

我目前的解决方案是在所需的规模创造我的渲染(如:panel.Width * 2),然后使用RenderTransform属性和设置ScaleTransform(如:0.5)。

内容现在看起来平滑而清脆,但现在布局会受到影响。由于渲染变换已经“调整了”面板的大小。

这样做的正确方法是什么?

编辑

这是我在做什么,以创建缓冲区:

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

回答

1

实际上需要设置刻度DXGISwapChain是使用IDXGISwapChain2.SetMatrixTransform交换链板组成大规模的逆方法:

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现在正是如何通过您正在使用的库来获取交换链对象引用。