代码之家  ›  专栏  ›  技术社区  ›  Jamie

Silverlight-多边形缩放和剪切

  •  1
  • Jamie  · 技术社区  · 15 年前

    我有一张画布,上面加了几千个多边形。

    我想能够放大(我是通过一个缩放转换来实现的)。

    不过,我一直在尝试使用画布。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;
        }
    

    我做错什么了吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Graeme Bradbury    15 年前

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

        2
  •  2
  •   Sowatech    13 年前

    scaleTransform(和所有其他转换一样)在每次其他渲染之后应用。这意味着,首先应用cliprect,然后应用scale转换。一个解决方案是,通过在这个画布周围放置另一个画布,将剪切级别提高一个级别。