2013-04-30 67 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