我正在尝试开发一个能够将某些对象拖入墨迹的应用程序。这些对象必须具有选择,更改位置,可以调整大小等功能。 任何人都可以帮我解决这个问题吗? 有没有办法在运行时访问所选的inkcanvas子项以便更改它的位置?每当发生新的拖放事件时,inkcanvas子项将添加到inkcanvas。 (请看下面的代码) 我已经看过墨迹的事件,但我找不到任何东西。 我将不胜感激任何帮助。谢谢。
private void Canvas1_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetData(e.Data.GetFormats()[0]) is Image)
{
Image im = (Image)e.Data.GetData(e.Data.GetFormats()[0]);
**Image image1 = new Image();
image1.Source = im.Source;
Canvas1.Children.Add(image1);**
}
}
答案 0 :(得分:1)
这一切都有EditingMode属性。
在下面的示例中,您可以将图像拖到窗口中以将其添加到画布,然后使用ComboBox将编辑模式更改为Select
之类的内容以移动画布中的任何项目。
XAML:
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Width="525"
Height="350"
AllowDrop="True"
Drop="MainWindow_OnDrop">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Selection mode" />
<ComboBox Width="75"
Margin="2"
ItemsSource="{Binding}"
SelectionChanged="Selector_OnSelectionChanged" />
</StackPanel>
<InkCanvas x:Name="InkCanvas1"
Grid.Row="1"
MoveEnabled="True" />
</Grid>
</Window>
代码隐藏:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace WpfApplication8
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
IEnumerable<InkCanvasEditingMode> values =
Enum.GetValues(typeof (InkCanvasEditingMode)).Cast<InkCanvasEditingMode>();
DataContext = values;
}
private void MainWindow_OnDrop(object sender, DragEventArgs e)
{
object data = e.Data.GetData(DataFormats.FileDrop);
if (data != null)
{
var strings = data as string[];
if (strings != null)
{
string s = strings[0];
var bitmapImage = new BitmapImage(new Uri(s));
var image = new Image
{
Stretch = Stretch.None,
Source = bitmapImage
};
InkCanvas1.Children.Add(image);
}
}
}
private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
object addedItem = e.AddedItems[0];
var inkCanvasEditingMode = (InkCanvasEditingMode) addedItem;
InkCanvas1.EditingMode = inkCanvasEditingMode;
}
}
}