2011-05-30 100 views
2

在具有缩放功能的wpf控件中,我从MouseWheelEventArgs计算如何缩放绘图画布以实现缩放效果。如何确定屏幕上的实际尺寸?

Point mouse = e.GetPosition(myCanvas); 
Matrix m = myCanvas.RenderTransform.Value; 

if (e.Delta > 0) 
{ 
    f = 1.1; 
} 
else 
{ 
    f = 1.0/1.1; 
} 

m.ScaleAtPrepend(f, f, mouse.X, mouse.Y); 
myCanvas.RenderTransform = new MatrixTransform(m); 

我想知道画布上其中一个圆的实际大小。然而,宽度,实际宽度等在放大和缩小时保持不变(16.0)。您如何确定(计算)用户在屏幕上实际看到的圈子大小?

回答

1

MatrixTransform对此有一个方法TransformBounds。你用图像的原始边界框(我认为在你的情况下,0,0,宽度,高度将会这样做)喂它,它会返回你的结果边界框。