Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Y轴反转的ScaleTransform进行缩放_C#_Wpf - Fatal编程技术网

C# 使用Y轴反转的ScaleTransform进行缩放

C# 使用Y轴反转的ScaleTransform进行缩放,c#,wpf,C#,Wpf,我的XAML: <ScrollViewer Name="MyScrollViewer" CanContentScroll="True"> <Grid Grid.Column="1" Margin="10"> MouseWheel="Grid_OnMouseWheel"> <Grid.RenderTransform> <ScaleTransform ScaleY="-1" /> </Grid.RenderTransform> ...

我的XAML:

<ScrollViewer Name="MyScrollViewer" CanContentScroll="True">
<Grid Grid.Column="1" Margin="10">
MouseWheel="Grid_OnMouseWheel">
<Grid.RenderTransform>
<ScaleTransform ScaleY="-1" />
</Grid.RenderTransform>
...
</Grid>
</ScrollViewer>

mouseweel=“Grid\u onmouseweel”>
...
我的代码:

如您所见,我需要左下角的零Y坐标:

private void Grid_OnMouseWheel(object sender, MouseWheelEventArgs e)
{

UIElement element = (UIElement)sender;
Point position = e.GetPosition(element);

double Width = element.RenderSize.Width;
double Height = element.RenderSize.Height;

Matrix GridMatrix = GUIGrid.LayoutTransform.Value;

if (e.Delta > 0)
{

ScaleFactor += 1;

ScaleTransform Transform = new ScaleTransform(ScaleFactor, ScaleFactor, position.X, position.Y);
Transform.ScaleY = -ScaleFactor;
GUIGrid.RenderTransform = Transform;
}
else
{

ScaleFactor -= 1;

if (ScaleFactor <= 0)
ScaleFactor = 1;

ScaleTransform Transform = new ScaleTransform(ScaleFactor, ScaleFactor, position.X, position.Y);
Transform.ScaleY = -ScaleFactor;
GUIGrid.RenderTransform = Transform;
}
e.Handled = true;
}
MouseWheel(对象发送者,MouseWheelEventArgs e)上的私有无效网格 { UIElement=(UIElement)发送方; 点位置=e.GetPosition(元素); 双宽度=element.renderize.Width; 双重高度=element.renderize.Height; 矩阵GridMatrix=GUIGrid.LayoutTransform.Value; 如果(e.Delta>0) { ScaleFactor+=1; ScaleTransform转换=新的ScaleTransform(ScaleFactor,ScaleFactor,position.X,position.Y); Transform.ScaleY=-ScaleFactor; GUIGrid.RenderTransform=转换; } 其他的 { ScaleFactor-=1;
如果(ScaleFactor好的,没有我希望的那么简单,而且文档很差

ScaleTransform Transform = new ScaleTransform();
Transform.Value.ScaleAtPrepend(ScaleFactor, ScaleFactor, Position.X, Position.Y);
Transform.ScaleX = ScaleFactor;
Transform.ScaleY = -ScaleFactor;
GUIGrid.RenderTransform = Transform;
现在工作和我预期的一样