有没有办法在深度缩放中对多尺度图像执行固定缩放?即单击一次将X,Y点缩放到2倍,再次单击恢复到原始位置和缩放级别?
我已经编写了放大和缩小的代码,但是在缩放过程中调用 zoomaboutlogicalpoint 会导致缩小太远(我猜是由于鼠标向上事件中的 1/2 因素 - 我可以获得缩放级别吗?)。另外我希望缩小的图像位于中心(我想我将点更改为缩放到图像的中间位置,但这似乎不起作用,也许我需要考虑 ViewPort 位置?)
例如
private void msi_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
Point p = e.GetPosition(msi); 缩放(2,p);}
private void msi_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
Point 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);
}
谢谢。