Поворот изображения и холста на 90 градусов в любом направлении - PullRequest
0 голосов
/ 10 мая 2019

Я разрабатываю приложение, в котором я использую InkCanvas, чтобы позволить пользователям редактировать изображения. Все работает, как и ожидалось, за исключением того, что я не мог найти, как вращать хранилища inkCanvas и фоновое изображение ниже. Ниже приведен код, который я в настоящее время имею любую помощь или руководство будет принята с благодарностью.

<Grid >
     <Grid.RowDefinitions>
        <RowDefinition Height="40"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid
        ManipulationMode="TranslateX,TranslateInertia,System" 
        Row="0" Background="White">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50"/>

            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="240"/>
        </Grid.ColumnDefinitions>
        <FontIcon 
            Tapped="OnBackButtonClick"
            Grid.Column="0"
            Width="50"
            Height="40"
            FontFamily="Segoe MDL2 Assets" 
            Glyph="&#xE72B;"/>

        <FontIcon 
            Tapped="SaveButton_OnClick"
            Grid.Column="2"
            Width="50"
            Height="40"
            FontFamily="Segoe MDL2 Assets" 
            Glyph="&#xE74E;"/>

        <FontIcon 
            Tapped="RedoButton_OnClick"
            Grid.Column="3"
            Width="50"
            Height="40"
            FontFamily="Segoe MDL2 Assets" 
            Glyph="&#xE7A6;"/>

        <FontIcon 
            Tapped="UndoButton_OnClick"
            Grid.Column="4"
            Width="50"
            Height="40"
            FontFamily="Segoe MDL2 Assets" 
            Glyph="&#xE7A7;"/>

        <FontIcon 
            Grid.Column="5"
            Width="50"
            Tapped="OnButtonRotateClick"
            Height="40"
            FontFamily="Segoe MDL2 Assets" 
            Glyph="&#xE7AD;"/>

        <InkToolbar 
            Grid.Column="7"
            x:Name="inkToolbar"
            HorizontalAlignment="Right"
            TargetInkCanvas="{x:Bind ink}" />

    </Grid>

    <StackPanel Grid.Row="1" >
        <Grid x:Name="Container">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="43*"/>
                <ColumnDefinition Width="437*"/>
            </Grid.ColumnDefinitions>
            <Image x:Name="ImageControl"
                   Source="/Assets/sample.jpg" 
                   Visibility="Visible"
                   Grid.ColumnSpan="2"
                   RenderTransformOrigin="0,0" 
                   Margin="0" 
                   Stretch="Fill"
                 />
            <InkCanvas x:Name="ink" 
                       Visibility="Visible"
                       Grid.ColumnSpan="2"
                       HorizontalAlignment="Stretch" 
                       VerticalAlignment="Stretch"/>
        </Grid>
    </StackPanel>
</Grid>

1 Ответ

0 голосов
/ 13 мая 2019

Поворот изображения и холста на 90 градусов в любом направлении

По вашему требованию вы можете изменить свойство PointTransform для InkStroke. Пожалуйста, обратитесь к следующему коду.

private void BtnSave_Click(object sender, RoutedEventArgs e)
{    
    IReadOnlyList<InkStroke> InkStrokeList = ink.InkPresenter.StrokeContainer.GetStrokes();
    foreach (InkStroke temp in InkStrokeList)
    {
        temp.PointTransform = Matrix3x2.CreateRotation((float)(90 * Math.PI / 180), new Vector2(500, 500));
    }
}
...