Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP SwapChainPanel内容模糊/缩放_C#_Uwp_Directx_Opengl Es 2.0_Skiasharp - Fatal编程技术网

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