我的项目中有很多图像和多个页面。我希望我的项目支持多屏幕分辨率。 我已经尝试过viewbox而且我无法成功,所以我尝试了一个图像
private void setResolution()
{
var bounds = Window.Current.Bounds;
ratioHeight = bounds.Height / standartHeight;
ratioWidth = bounds.Width / standartWidth;
Canvas.SetLeft(img1, Canvas.GetLeft(img1) * (ratioWidth));
Canvas.SetTop(img1, Canvas.GetTop(img1) * (ratioHeight));
img1.Width = img1.ActualWidth * (ratioWidth);
img1.Height = img1.ActualHeight * (ratioHeight);
}
虽然有效但很长时间并且很难将其应用于约500张照片上。
有没有办法在舞台上获取所有图像并立即更改其坐标
抱歉我的英文。
答案 0 :(得分:0)
公认的解决方案(Microsoft推荐)是使用网格进行放置,并使用多个图像来处理多种分辨率。他们的解决方案将提供元素的动态放置并加载正确的图像。
查看Multi-resolution apps for Windows Phone 8
的页面(这里粘贴代码太多了。)
答案 1 :(得分:0)
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
foreach (Image Images in FindVisualChildren<Image>(pageMain))
{
Canvas.SetLeft(Images, Canvas.GetLeft(Images) * (ratioWidth));
Canvas.SetTop(Images, Canvas.GetTop(Images) * (ratioHeight));
Images.Width = Images.ActualWidth * (ratioWidth);
Images.Height = Images.ActualHeight * (ratioHeight);
}
它对我有用(pageMain是Page的名字)