修正事件处理

This commit is contained in:
ww-rm
2025-04-25 22:08:11 +08:00
parent 1e043e4faa
commit b8509ccb69

View File

@@ -77,9 +77,8 @@ namespace SpineViewer.Controls
renderW *= scale; renderW *= scale;
renderH *= scale; renderH *= scale;
// 必须通过 SFML 的方法调整窗口 panel_Render.Location = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5)); panel_Render.Size = new((int)(renderW + 0.5), (int)(renderH + 0.5));
renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
resolution = value; resolution = value;
// 设置完 resolution 后还原缩放比例 // 设置完 resolution 后还原缩放比例
@@ -423,6 +422,9 @@ namespace SpineViewer.Controls
float delta; float delta;
while (cancelToken is not null && !cancelToken.IsCancellationRequested) while (cancelToken is not null && !cancelToken.IsCancellationRequested)
{ {
// 必须让 SFML 有机会处理窗口消息, 例如位置和大小变化
renderWindow.DispatchEvents();
delta = clock.ElapsedTime.AsSeconds(); delta = clock.ElapsedTime.AsSeconds();
clock.Restart(); clock.Restart();
@@ -514,9 +516,8 @@ namespace SpineViewer.Controls
renderW *= scale; renderW *= scale;
renderH *= scale; renderH *= scale;
// 必须通过 SFML 的方法调整窗口, 此处必须四舍五入, 否则在全屏和小窗多次切换之后会有明显的舍入误差 panel_Render.Location = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5)); panel_Render.Size = new((int)(renderW + 0.5), (int)(renderH + 0.5));
renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
} }
private void panel_Render_MouseDown(object sender, MouseEventArgs e) private void panel_Render_MouseDown(object sender, MouseEventArgs e)