【发布时间】:2009-12-09 13:19:24
【问题描述】:
我刚开始学习 SL。我试图在调整大小时调整画布内所有元素的大小。但我找不到正确的方法。
这就是我所做的
- 遍历画布中的所有子元素
- 根据新尺寸计算比例 X 和 Y
- 并将比例值与每个元素的大小属性相乘
但在 SL3.0 中,我在 UIelement 中找不到任何尺寸属性来设置新尺寸。示例代码下方
private void testCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
var scaleX = e.NewSize.Width / e.PreviousSize.Width;
var scaleY = e.NewSize.Height / e.PreviousSize.Height;
for (int i = 0; i < testCanvas.Children.Count; i++)
{
UIElement ui = testCanvas.Children[i];
// but no ui.width or ui.height
}
}
我也无法找到一个选项来将每个元素移动到相对于尺寸改变的画布的新位置......
谁能给我指出正确的方向..
更新:
我想在MSCUI 中实现这样的目标。为了更清楚,我添加了一些屏幕截图
这是初始屏幕的外观。 alt text http://img690.imageshack.us/img690/4611/initial.jpg
在扩展小部件时,它会放大,而其他小部件会缩小
alt text http://img26.imageshack.us/img26/8725/afterexpand.jpg
我只需要做缩放部分。有什么想法吗??
【问题讨论】:
-
您想要的真实布局特征的细节有点粗略,您可以考虑在问题中添加更多细节。例如,画布是否包含可滚动的文本项?如果是这样,这些项目应该简单地显示更多文本还是应该增加文本的大小?您希望项目与画布边界的距离增加还是保持不变并且项目区域仅增长?
-
@Anthony,添加了更多信息,请查看..
标签: c# silverlight silverlight-3.0 transform