WPF Canvas视图端口中代表的像素数

时间:2015-11-06 18:07:37

标签: c# wpf canvas

我在这篇文章中的目标是,我想找到一种方法来正确设置变量currentDisplayHeight.关键是我不是在寻找视口的高度,而是以像素为单位的高度由画布的视口表示,无论它们当前在何处观看(你可以放大和缩小)。

因此,为了解释下面的代码,如果你看一下scaleFactor,它取决于我孩子的总高度除以画布视图端口中显示的像素的高度。使用它来缩放视口将允许我显示所有孩子。

我尝试将下面的代码尽可能地放在骨架上。为简单起见,我假设我们可以将缩放限制为仅高度并忽略宽度:

//Get current transform settings
Matrix matrix = transform.Matrix;

//Regardless of current view port position, move to Top Left corner.
matrix.OffsetX = 0;
matrix.OffsetY = 0;

int totalHeight = getTotalHeightOfCanvasChildrenInPixels();
int currentDisplayHeight = ?????????????

double scaleFactor = totalHeight / currentDisplayHeight;
matrix.Scale(scaleFactor, scaleFactor);

//Persist changes
transform.Matrix = matrix;

以下是我们从

获取transform.Matrix的xaml
<Canvas Name="Canvas" DockPanel.Dock="Bottom" MouseWheel="Canvas_MouseWheel" Background="White" >
     <Canvas.RenderTransform>
         <MatrixTransform x:Name="transform" />
     </Canvas.RenderTransform>
</Canvas>

0 个答案:

没有答案