Windows 8 用矩形裁剪图像

Windows 8 用矩形裁剪图像,windows-8,windows-runtime,microsoft-metro,windows-store-apps,winrt-xaml,Windows 8,Windows Runtime,Microsoft Metro,Windows Store Apps,Winrt Xaml,我有一个图像,我想用一个矩形裁剪它,下面的代码是我放一个图像并在图像中间画一个矩形的代码: MainPage.Xaml: <Canvas x:Name="canvas" HorizontalAlignment="Center" VerticalAlignment="Center" Width="340" Height="480" Background="Blue"> <Image x:Name="photo" HorizontalAlignment="Cente

我有一个图像,我想用一个矩形裁剪它,下面的代码是我放一个图像并在图像中间画一个矩形的代码:

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>

我没有使用或XAML,因为它会给我带来困惑。因此,我根据您的问题创建了一个片段。试试看,让我知道结果。我使用了与您发布的相同的图像

XAML


C#

private void btnCrop\u单击(对象发送方,路由目标)
{
var _rect=新矩形几何体();
_rect.rect=path.Data.Bounds;
photo.Clip=_rect;
}

我没有使用或XAML,因为它会让我感到困惑。因此,我根据您的问题创建了一个片段。试试看,让我知道结果。我使用了与您发布的相同的图像

XAML


C#

private void btnCrop\u单击(对象发送方,路由目标)
{
var _rect=新矩形几何体();
_rect.rect=path.Data.Bounds;
photo.Clip=_rect;
}

我没有使用或XAML,因为它会让我感到困惑。因此,我根据您的问题创建了一个片段。试试看,让我知道结果。我使用了与您发布的相同的图像

XAML


C#

private void btnCrop\u单击(对象发送方,路由目标)
{
var _rect=新矩形几何体();
_rect.rect=path.Data.Bounds;
photo.Clip=_rect;
}

我没有使用或XAML,因为它会让我感到困惑。因此,我根据您的问题创建了一个片段。试试看,让我知道结果。我使用了与您发布的相同的图像

XAML


C#

private void btnCrop\u单击(对象发送方,路由目标)
{
var _rect=新矩形几何体();
_rect.rect=path.Data.Bounds;
photo.Clip=_rect;
}


谢谢您的回复。但在我点击“裁剪”按钮后,图像就消失了。您希望输出什么?裁剪只做那件事。我想要的是裁剪矩形内的图像,但单击裁剪后,整个图像丢失。这些不是您预期的输出吗?对不起,是的!它现在正在工作。但是硬代码是协调的。我的图像可以移动,所以即使我移动到另一个点,它仍然是在同一个地方。你知道怎么做吗?谢谢你的回复。但在我点击“裁剪”按钮后,图像就消失了。您希望输出什么?裁剪只做那件事。我想要的是裁剪矩形内的图像,但单击裁剪后,整个图像丢失。这些不是您预期的输出吗?对不起,是的!它现在正在工作。但是硬代码是协调的。我的图像可以移动,所以即使我移动到另一个点,它仍然是在同一个地方。你知道怎么做吗?谢谢你的回复。但在我点击“裁剪”按钮后,图像就消失了。您希望输出什么?裁剪只做那件事。我想要的是裁剪矩形内的图像,但单击裁剪后,整个图像丢失。这些不是您预期的输出吗?对不起,是的!它现在正在工作。但是硬代码是协调的。我的图像可以移动,所以即使我移动到另一个点,它仍然是在同一个地方。你知道怎么做吗?谢谢你的回复。但在我点击“裁剪”按钮后,图像就消失了。您希望输出什么?裁剪只做那件事。我想要的是裁剪矩形内的图像,但单击裁剪后,整个图像丢失。这些不是您预期的输出吗?对不起,是的!它现在正在工作。但是硬代码是协调的。我的图像可以移动,所以即使我移动到另一个点,它仍然是在同一个地方。你知道怎么做吗?谢谢
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;
        }
}