【问题标题】:Silverlight - polygon scaling and clippingSilverlight - 多边形缩放和裁剪
【发布时间】:2010-11-26 10:30:48
【问题描述】:

我有一个画布,我已经添加了几千个多边形。

我希望能够放大(我正在通过 ScaleTransform 进行。

但是,我也一直在尝试使用 Canvas.Clip 来仅绘制 Canvas 的一部分,但是一旦更改了 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;
    }

我做错了什么吗?

【问题讨论】:

    标签: silverlight scaling polygon clipping


    【解决方案1】:

    ScaleTransform(与所有其他转换一样)在其他所有渲染之后应用。这意味着,首先应用剪辑矩形,然后应用缩放变换。一种解决方案是通过在此画布周围放置另一张画布,将剪裁提高一层。

    【讨论】:

      【解决方案2】:

      在画布周围放置一个边框,并将剪辑区域附加到边框而不是画布上。

      【讨论】:

        猜你喜欢
        • 2017-10-28
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 2011-04-18
        • 2011-09-08
        • 1970-01-01
        相关资源
        最近更新 更多