我正在制作视频游戏,在这个级别上,我试图让它运行多个分辨率选项。
对于我的游戏中可用的每种可能的分辨率,我制作了一个单独的xaml文件,具有不同的高度,宽度,边距,字体大小,但代码附件相同。
现在,我想允许用户选择分辨率,因此对于每个这样的选择,加载一个xaml文件。
例如,在游戏开始时,我希望应用程序检查哪个分辨率现在处于活动状态。
我真的无法在这里提供一些特定的代码,我不知道该怎么做。我尝试添加xaml文件作为资源,但仍然不了解如何选择其中一个作为活动文件。
类似的东西:
if (Resolution=="1600x900")
{
// make resource file "res_1600_900.xaml" be active instead of MainWindow.xaml
}
当然,我可以将代码分配给文件夹中的文件而不是资源,这没关系。
如果有另一种方法可以同时改变所有物体的所有尺寸和位置,我会很高兴听到它。
谢谢你, 叶甫盖尼
UPD:将xaml复制到UserControl后的错误消息
错误4' RealityIncognita.UserControl1'不包含' AnySoundEnd'的定义并且没有任何扩展方法' AnySoundEnd'接受类型' RealityIncognita.UserControl1'的第一个参数。可以找到(你是否错过了使用指令或程序集引用?)C:\ Users \ Evgenie \ Desktop \ Quest game \ RealityIncognita_0.7.4 \ RealityIncognita \ res_1600_900.xaml 25 114 RealityIncognita
答案 0 :(得分:0)
这是解决这个问题的最简单方法:
x:Name
命名任何边距,字体,大小或任何更改分辨率时需要更改的控件。 <Button x:Name="RedButton" Margin="0,0,0,4" Content="Fire" Click="RB_Click"/>
在后面的代码中,当用户更改分辨率时,请更新内容的大小:
RedButton.Margin = new Thickness(10,10,10,40);
执行以上或类似于需要调整大小的所有控件,它们会立即调整大小。
解决此问题的另一种方法(这是你似乎已经开始的方式):
将其中一个分配给您要向用户显示的窗口:
myWindow.Child = UC1;
如果/当用户更改分辨率时,只需更改窗口中显示的用户控件:
myWindow.Child = UC3;
看起来你可能正在主窗口代码-bahind中工作。如果是这种情况,请用以下代码替换上面的代码行:
Child = UC1;
或
Child = UC3;
将它们命名为UC