修改缩放公式
This commit is contained in:
@@ -23,7 +23,7 @@ namespace SpineViewer.Controls
|
|||||||
renderWindow.SetActive(false);
|
renderWindow.SetActive(false);
|
||||||
|
|
||||||
// 设置默认参数
|
// 设置默认参数
|
||||||
Resolution = new(2048, 2048);
|
Resolution = Screen.PrimaryScreen.Bounds.Size;
|
||||||
Center = new(0, 0);
|
Center = new(0, 0);
|
||||||
FlipY = true;
|
FlipY = true;
|
||||||
MaxFps = 30;
|
MaxFps = 30;
|
||||||
@@ -423,27 +423,17 @@ namespace SpineViewer.Controls
|
|||||||
if (renderWindow is null)
|
if (renderWindow is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float parentX = panel_Render.Parent.Width;
|
float parentW = panel_Render.Parent.Width;
|
||||||
float parentY = panel_Render.Parent.Height;
|
float parentH = panel_Render.Parent.Height;
|
||||||
float sizeX = panel_Render.Width;
|
float renderW = panel_Render.Width;
|
||||||
float sizeY = panel_Render.Height;
|
float renderH = panel_Render.Height;
|
||||||
|
float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render
|
||||||
if ((sizeY / sizeX) < (parentY / parentX))
|
renderH *= scale;
|
||||||
{
|
renderW *= scale;
|
||||||
// 相同的 X, 子窗口 Y 更小
|
|
||||||
sizeY = parentX * sizeY / sizeX;
|
|
||||||
sizeX = parentX;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 相同的 Y, 子窗口 X 更小
|
|
||||||
sizeX = parentY * sizeX / sizeY;
|
|
||||||
sizeY = parentY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 必须通过 SFML 的方法调整窗口
|
// 必须通过 SFML 的方法调整窗口
|
||||||
renderWindow.Position = new((int)(parentX - sizeX) / 2, (int)(parentY - sizeY) / 2);
|
renderWindow.Position = new((int)(parentW - renderW) / 2, (int)(parentH - renderH) / 2);
|
||||||
renderWindow.Size = new((uint)sizeX, (uint)sizeY);
|
renderWindow.Size = new((uint)renderW, (uint)renderH);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void panel_Render_MouseDown(object sender, MouseEventArgs e)
|
private void panel_Render_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
|||||||
Reference in New Issue
Block a user