我在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 :(得分:2)
您可以将RotateTransform分配给Thumb的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
值,因为它们会影响旋转中心。
答案 1 :(得分:-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。