C# UWP SwapChainPanel内容模糊/缩放
我过去常在一个C# UWP SwapChainPanel内容模糊/缩放,c#,uwp,directx,opengl-es-2.0,skiasharp,C#,Uwp,Directx,Opengl Es 2.0,Skiasharp,我过去常在一个SwapChainPanel(通过角度)上画画,一切都很顺利。然而,我面临的一个问题是,内容在高DPI屏幕上被缩放 我有一个高分辨率(x2)和一个正常(x1)屏幕在我的机器上这里。面板的内容在1x显示屏上看起来很棒,但当我将其拖动过来时,窗口会调整大小并缩放内容。我如何告诉面板不要缩放内容,而是让我调整侧边 我当前的解决方案是以所需的比例创建渲染缓冲区(例如:panel.Width*2),然后使用RenderTransform属性并设置ScaleTransform(例如:0.5)
SwapChainPanel
(通过角度)上画画,一切都很顺利。然而,我面临的一个问题是,内容在高DPI屏幕上被缩放
我有一个高分辨率(x2)和一个正常(x1)屏幕在我的机器上这里。面板的内容在1x显示屏上看起来很棒,但当我将其拖动过来时,窗口会调整大小并缩放内容。我如何告诉面板不要缩放内容,而是让我调整侧边
我当前的解决方案是以所需的比例创建渲染缓冲区(例如:panel.Width*2
),然后使用RenderTransform
属性并设置ScaleTransform
(例如:0.5
)
内容现在看起来平滑而清晰,但现在布局受到影响。由于渲染变换已“调整”面板大小
正确的方法是什么
编辑
这就是我创建缓冲区的步骤:
您必须使用以下方法将DXGISwapChain上的比例设置为交换链面板组合比例的倒数:
SwapChainPanel面板=。。。;
IDXGISwapChain2交换链=。。。;
DXGI_矩阵_3X2_F标度;
逆刻度。_11=1.0f/swapChainPanel.CompositionScaleX;
逆刻度=1.0f/swapChainPanel.CompositionScaleY;
var hr=交换链设置矩阵转换(参考比例);
如果(hr<0)
元帅。通过hr(hr)的例外情况;
不过,我不知道如何通过您正在使用的库获取swapchain对象引用
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);