【发布时间】:2014-08-21 17:50:52
【问题描述】:
我有一个图像,我想用一个矩形来裁剪它,下面的代码是我放置一个图像并在图像中间绘制一个矩形的代码:
MainPage.Xaml:
<Canvas x:Name="canvas" HorizontalAlignment="Center" VerticalAlignment="Center" Width="340" Height="480" Background="Blue">
<Image x:Name="photo" HorizontalAlignment="Center" VerticalAlignment="Center" ManipulationMode="All">
<Image.RenderTransform>
<CompositeTransform/>
</Image.RenderTransform>
</Image>
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<RectangleGeometry Rect="0,0,340,480"/>
</Path.Data>
</Path>
</Canvas>
我可以移动图像。下面的代码是转换图像,并且裁剪功能正在工作。如何绑定数据并将矩形坐标设置为动态而不是硬代码坐标?谢谢。
public sealed partial class MainPage: Page
{
private CompositeTransform compositeTranslation;
public MainPage()
{
this.InitializeComponent();
photo.ManipulationDelta += Composite_ManipulationDelta;
compositeTranslation = new CompositeTransform();
photo.RenderTransform = this.compositeTranslation;
}
void Composite_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
// scale the image.
compositeTranslation.CenterX = photo.ActualWidth / 2;
compositeTranslation.CenterY = photo.ActualHeight / 2;
compositeTranslation.ScaleX *= e.Delta.Scale;
compositeTranslation.ScaleY *= e.Delta.Scale;
compositeTranslation.TranslateX += e.Delta.Translation.X;
compositeTranslation.TranslateY += e.Delta.Translation.Y;
}
private void btnCrop_Click(object sender, RoutedEventArgs e)
{
var _rect = new RectangleGeometry();
_rect.Rect = path.Data.Bounds;
photo.Clip = _rect;
}
}
【问题讨论】:
-
那么矩形位置应该是什么?它也应该与矩形一起移动?矩形和图片的相对位置应该是固定的吧?
-
矩形固定在屏幕中间,只有图像可以移动。矩形裁剪尺寸始终为 340x480。谢谢
-
矩形应该在屏幕或图像的中间?
-
矩形应该在中间。
-
矩形将位于屏幕中间,并且可以平移图像。矩形内的内容会被剪掉,对吗?
标签: windows-8 windows-runtime microsoft-metro windows-store-apps winrt-xaml