模式二:按比例縮放 — 視窗切換時所有物件 (角色、地圖、障礙物、文字) 等比例放大/縮小。核心變化:所有尺寸相關屬性乘以縮放比例。
寬屏下正方單元格變形,需 GridSizeX、GridSizeY 分別代表寬高,始能勝任非等比縮放。
private void ChangeWindowSize(double cw, double ch, double nw, double nh)
{
Leader.Action = Actions.Stop; Leader.Direction = 4;
if (storyboard != null) storyboard.Stop();
ratioX = nw / cw; ratioY = nh / ch;
GridSizeX *= ratioX; GridSizeY *= ratioY;
Carrier.Width = ActualWidth * ratioX;
Carrier.Height = ActualHeight * ratioY;
for (int i = 0; i < Carrier.Children.Count; i++)
{
if (Carrier.Children[i] is QXObject obj)
{
obj.X *= ratioX; obj.Y *= ratioY;
obj.Width_ *= ratioX; obj.Height_ *= ratioY;
obj.CenterX *= ratioX; obj.CenterY *= ratioY;
if (obj is QXSpirit sp)
{
sp.Describtion.Height *= ratioY;
sp.Describtion.SetValue(Canvas.TopProperty,
(double)sp.Describtion.GetValue(Canvas.TopProperty) * ratioY);
sp.Faction.FontSize *= ratioX;
sp.Clan.FontSize *= ratioX;
sp.SName.FontSize *= ratioX;
}
}
}
}
下節登場:怪物系統上線,帥氣主角不再孤單!