我是 WP7 / Silverlight / C# 编程的新手,我目前正在整理一个简单的放大应用程序来掌握一些事情。为了提供“放大”和“缩小”功能,我成功地在包含视频源的 UIElement 上使用了 ScaleTransform。
随着我进一步开发应用程序,我意识到我想适应应用程序使用过程中的方向变化,并确保视频源做出相应响应(应用程序固定为横向模式,但用户可能希望“将手机翻转过来”) ' 由于某些原因)。为了解决这个问题,我创建并应用了一个 RotateTransform 并链接到 OrientationChanged 事件。
所有这些都可以正常工作,但是当我在更改方向后尝试缩放(使用 ScaleTransform)时,视频源会缩放,但会将源翻转回“默认”方向,因此会上下颠倒。
鉴于此,我认为我需要在放大时应用这两种变换,所以我创建了一个 TransformGroup 并向其中添加了 ScaleTransform 和 RotateTransform。但是,缩放功能不适用于此功能,并且似乎没有应用任何变换。
尝试应用 TransformGroup 时是否有其他人遇到过问题?
我在下面包含了放大和方向代码的片段以供参考 - 如果我做的事情很长,请提前道歉,但请记住我仍在学习。
任何帮助,将不胜感激。在此先感谢,克雷格。
UIElement videocontainer;
RotateTransform rotatetransform = new RotateTransform();
void MainPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
switch (Orientation)
{
case PageOrientation.LandscapeLeft:
rotatetransform.Angle = 0;
break;
default:
rotatetransform.Angle = 180;
break;
}
rotatetransform.CenterX = 320;
rotatetransform.CenterY = 240;
videocontainer.RenderTransform = rotatetransform;
private void ZoomIn_Click(object sender, EventArgs e)
{
if (zoom < 7)
{
switch (Orientation)
{
case PageOrientation.LandscapeLeft:
ScaleTransform myscaletransform1 = new ScaleTransform();
myscaletransform1.ScaleX = myscaletransform1.ScaleX * 1.25;
myscaletransform1.ScaleY = myscaletransform1.ScaleY * 1.25;
myscaletransform1.CenterX = 320;
myscaletransform1.CenterY = 240;
TransformGroup zoomintranformgroup1 = new TransformGroup();
zoomintranformgroup1.Children.Add(myscaletransform1);
zoomintranformgroup1.Children.Add(rotatetransform);
videocontainer.RenderTransform = zoomintransformgroup1;
zoom++;
break;
default:
ScaleTransform myscaletransform2 = new ScaleTransform();
myscaletransform2.ScaleX = myscaletransform2.ScaleX * 1.25;
myscaletransform2.ScaleY = myscaletransform2.ScaleY * 1.25;
myscaletransform2.CenterX = 320;
myscaletransform2.CenterY = 240;
TransformGroup zoomintranformgroup2 = new TransformGroup();
zoomintranformgroup2.Children.Add(myscaletransform2);
zoomintranformgroup2.Children.Add(rotatetransform);
videocontainer.RenderTransform = zoomintransformgroup2;
zoom++;
break;
}
}
else
{
return;
}
}