有没有办法在深度缩放中对多尺度图像执行固定缩放?即单击一次以缩放X点,Y至2x,再次单击以恢复到原始位置和缩放级别?
我已经编写了放大和缩小的代码,但是在缩放过程中途调用zoomaboutlogicalpoint会导致缩小太远(我想由于鼠标向上事件的1/2因素 - 我可以获得缩放级别吗? )。此外,我希望缩小的图像是中心的(我想我更改点缩放到图像的中间位置,但这似乎不起作用,也许我需要考虑ViewPort位置?)
e.g。
private void msi_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
{
点p = e.GetPosition(msi);
缩放(2,p);
}
private void msi_MouseLeftButtonUp(object sender,MouseButtonEventArgs e)
{
点p = e.GetPosition(msi);
缩放(1/2,p);
}
public void Zoom(double zoom, Point pointToZoom)
{
bool zoomingIn = zoom > 1;
bool zoomingOut = zoom < 1;
double minViewportWidth = 0.05;
double maxViewportWidth = 1;
if (msi.ViewportWidth < minViewportWidth && zoomingIn)
{
return;
}
if (msi.ViewportWidth > maxViewportWidth && zoomingOut)
{
return;
}
Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom);
this.msi.ZoomAboutLogicalPoint(zoom, logicalPoint.X, logicalPoint.Y);
}
感谢。
答案 0 :(得分:0)
在缩小之前重置变换原点似乎已经成功了:
msi.RenderTransformOrigin =新点(msi.Height / 2,msi.Width / 2);