2013-04-30 70 views
0

我已在WPF用户控件包含在画布上的图像:旋转图片的点击WPF

<Canvas> 
<Thumb Canvas.Left="19" Canvas.Top="-7" Canvas.ZIndex="99" DragDelta="Thumb_DragDelta"> 
<Thumb.Template> 
     <ControlTemplate> 
      <Image Name="Image1" Source="/Images/Image1.png" Height="120" Width="242" Margin="63,180,696,393" /> 
     </ControlTemplate> 
</Thumb.Template> 
</Thumb> 
<Thumb Canvas.Left="52" Canvas.Top="6" DragDelta="Thumb_DragDelta"> 
<Thumb.Template> 
     <ControlTemplate> 
     <Image Name="Image2" Source="/Images/Image2.png" Height="120" Width="205" Margin="760,184,74,397" /> 
     </ControlTemplate> 
    </Thumb.Template> 
    </Thumb> 
    <Thumb Canvas.Left="21" DragDelta="Thumb_DragDelta" Canvas.Top="-18"> 
    <Thumb.Template> 
     <ControlTemplate> 
      <Image Name="Image3" Source="/Images/Image3.png" Height="124" Width="260" Margin="82,426,697,151" /> 
     </ControlTemplate> 
    </Thumb.Template> 
    </Thumb> 
    <Thumb Canvas.Left="30" Canvas.Top="1" DragDelta="Thumb_DragDelta"> 
    <Thumb.Template> 
     <ControlTemplate> 
     <Image Name="Image4" Source="/Images/Image4.png" Height="124" Width="255" Margin="744,341,39,236" /> 
     </ControlTemplate> 
    </Thumb.Template> 
    </Thumb> 
</Canvas> 

我有那么包含在以下代码后面,所以这些拇指图像可以被周围移动屏幕,这工作正常。

// Move images on canvas 
    private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
    { 
     UIElement thumb = e.Source as UIElement; 

     Canvas.SetLeft(thumb, Canvas.GetLeft(thumb) + e.HorizontalChange); 
     Canvas.SetTop(thumb, Canvas.GetTop(thumb) + e.VerticalChange); 
    } 

有谁知道快速添加,我可以在画布上用拇指添加到这个代码,所以,我要在不同方向和不同的角度点击一个按钮旋转这些图像的选项?

感谢

+0

也许这篇文章将让你去:http://stackoverflow.com/questions/7228373/how-to-make-a-image-swivel-in-wpf。 – 2013-04-30 14:26:45

回答

2

您可以指定一个RotateTransform到你大拇指的RenderTransform财产和修改RotateTransform的Angle在事件处理程序:

<Thumb Canvas.Left="52" Canvas.Top="7" RenderTransformOrigin="0.5,0.5" 
     DragDelta="Thumb_DragDelta" MouseDoubleClick="Thumb_MouseDoubleClick"> 
    <Thumb.RenderTransform> 
     <RotateTransform/> 
    </Thumb.RenderTransform> 
    <Thumb.Template> 
     ... 
    </Thumb.Template> 
</Thumb> 

事件处理程序看起来可能是这样:

private void Thumb_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    var thumb = e.Source as UIElement; 
    var transform = thumb.RenderTransform as RotateTransform; 
    transform.Angle += 90; 
} 

但是,您应该更改拇指上的大型Margin值,因为它们会影响旋转中心。

+0

感谢您的建议Clemens,它可以围绕我的用户控件的中心旋转拇指,您是否知道如何编辑此图像以围绕图像中心旋转。感谢您的帮助到目前为止:) – HHH 2013-05-02 19:41:34

+1

这就是我的意思是改变大毛利。但是,您可以删除RenderTransformOrigin并使用RotateTransform的CenterX和CenterY属性进行游戏。 – Clemens 2013-05-02 21:03:39

+0

好的没有问题我现在得到你。感谢您的帮助 :) – HHH 2013-05-03 09:21:39

-1
Canvas container = new Canvas(); 
    container.Children.Add(image); 
    container.Arrange(new Rect(0, 0, source.PixelWidth, source.PixelHeight)); 

    // render the result to a new bitmap. 
    RenderTargetBitmap target = new RenderTargetBitmap(targetWidth, targetHeight,  sourceDpiX, sourceDpiY, PixelFormats.Default); 
    target.Render(container); 

RenderTargetBitmap可以在任何控制地使用它来代替的BitmapSource的。

+0

不错,但是这并不回答OP的问题。 – 2013-04-30 13:31:40

+0

这可以被添加到按钮单击事件 – 2013-04-30 13:40:54

+0

我不知道你的意思。这将如何让我旋转图像?代码不起作用 - 说当前上下文中不存在大多数变量。 – HHH 2013-04-30 13:47:36