我有帆布,向其中我已经添加几千多边形。

我想能够在(其中我经由ScaleTransform做放大。

不过,我一直在试图用一个Canvas.Clip以及只绘制的画布的一部分,但只要ScaleTransform值发生改变,剪切停止工作...

    <Canvas Grid.Row="1" Margin="10" x:Name="cnvMain" Background="Transparent" >
        <Canvas.Clip>
            <RectangleGeometry x:Name="CanvasClip"  Rect="0, 0, 300, 300"/>
        </Canvas.Clip>
        <Canvas.RenderTransform>
            <ScaleTransform x:Name="CanvasScaleTransform" ScaleX="1" ScaleY="1"></ScaleTransform>
        </Canvas.RenderTransform>
     </Canvas>

和在我隐藏,

    private void slScale_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        CanvasScaleTransform.ScaleX = slScale.Value;
        CanvasScaleTransform.ScaleY = slScale.Value;
    }

我在做什么明显的错误?

有帮助吗?

解决方案

把边框围绕你的画布和附加剪辑区域的边界,而不是在画布上。

其他提示

在ScaleTransform(如所有其它的变换)应用于每个其它在渲染之后。这意味着,第一施加cliprect,那么尺度变换。的溶液。将做限幅一个水平时,通过将另一帆布围绕这一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top