http://www.codeproject.com/Articles/30725/Cropping-Images
本文介绍如何使用后面的代码裁剪图像,但我想使用View模型和命令裁剪图像。这可以实现吗?
我不确定如何发送(对象发送者,MouseEventArgs e)来命令。
答案 0 :(得分:0)
这可能有点迟到回答这个问题,但我也试图使用mvvm创建一个图像裁剪器应用程序。我不是专家,仍然是WPF和MVVM的新手,但为了让我发送鼠标事件,如mouseleftbuttondown,mousemove,mouseleftbuttonup来查看我使用表达混合的eventtriggers。在视图中,我分配或命名我选择的事件触发器并将命令绑定到适当的控件。在我的应用程序中,我有一个画布,在Grid中有一个矩形子项,它也可以保存图像。用户导入图像并在图像上绘制矩形以对其进行裁剪,这是通过使用鼠标事件实现的。我在我的网格中绑定命令,当有人对我实现的事件(mouseleftbuttondown / up,mousemove)进行操作时,它将触发触发器。以下是它在xaml(或者我尚未完成的部分内容)中的外观:
<Grid x:Name="GridLoadedImage" HorizontalAlignment="Left" VerticalAlignment="Top">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding MouseLeftButtonDownCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Grid.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=slider1, Path=Value}" ScaleY="{Binding ElementName=slider1, Path=Value}"/>
</Grid.LayoutTransform>
<Image x:Name="LoadedImage" Margin="10" Source="{Binding ImagePath}"/>
<Canvas x:Name="BackPanel" Margin="10">
<Rectangle x:Name="selectionRectangle" Stroke="LightBlue" Fill="#220000FF" Visibility="Collapsed"/>
</Canvas>
</Grid>
我目前正在将编码放在我的视图模型中,我计划为所有三个mouseevent提供函数命令。如果您打算使用事件触发器,则需要在mainwindow xaml
中添加以下语句 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
您还需要安装Expression Blend SDK。我安装了nuget包管理器,并用它来安装表达式混合。希望这有帮助