Silverlight 4:使用Thumb调整动态矩形的大小

时间:2011-07-21 05:19:29

标签: silverlight resize silverlight-4.0

XAML

<Canvas x:Name="cvsBurstImage" MouseLeftButtonDown="cvsBurstImage_MouseLeftButtonDown" Style="{StaticResource BurstCanvasStyle}">
   <Viewbox x:Name="vbBurstImage" Style="{StaticResource ViewboxCanvasStyle}">
            <Image x:Name="imgBurstImage" Source="../Assets/Images/default_burst_image.png" ImageFailed="imgBurstImage_ImageFailed"/>
   </Viewbox>                                   
</Canvas>

我面临一个奇怪的问题,我需要在画布上绘制矩形并使它们可调整大小以及可移动(将它们放在画布中的任何位置)。

我通过画布的鼠标事件实现了这一点;

  1. private void Canvas_MouseLeftButtonDown(object sender,MouseButtonEventArgs e){}
  2. private void Canvas_MouseMove(object sender,MouseEventArgs e){}
  3. private void Canvas_MouseLeftButtonUp(object sender,MouseButtonEventArgs e){}
  4. 解释; 在MouseLeftButtonDown上,我开始捕获鼠标坐标并继续使用鼠标移动(使用这些坐标创建高度和宽度),在MouseLeftButtonUp上,我停止监听鼠标并在画布上将这些坐标绘制为Rectangle,并将此矩形作为子元素添加到画布。我还为这个矩形添加了3个鼠标事件;

    1. private void Rectangle_MouseLeftButtonUp(object sender,MouseButtonEventArgs e)
    2. private void Rectangle_MouseMove(object sender,MouseEventArgs e)
    3. private void Rectangle_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
    4. 这些事件用于识别给定的矩形(Rectangle_MouseLeftButtonDown)并将此矩形移动到鼠标坐标(Rectangle_MouseMove)并停止侦听(Rectangle_MouseLeftButtonUp)。

      现在,我必须在此Rectangle中添加调整大小功能。我希望使用Thumb实现这一点,但我无法实现这一点。

      有人可以帮我解决这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

将所有这些可重用的功能直接添加到对象中似乎有点浪费。

为什么不使用像this one这样的行为?这就是他们真正有用的东西。它们也装饰有把手等。