akremb22 Ответов: 2

поворот растрового изображения


Я хочу повернуть растровое изображение я написал некоторый код и он работает

TransformedBitmap TempImage = new TransformedBitmap();

 TempImage.BeginInit();
 TempImage.Source = MyImageSource; // MyImageSource of type BitmapImage

 RotateTransform transform = new RotateTransform(90);
 TempImage.Transform = transform;
 TempImage.EndInit();

 image1.Source = TempImage ;


но я хочу, чтобы MyImageSource получил эту модификацию, потому что, например, если я снова нажму на кнопку, ничего не произойдет, и это нормально, он получит первую форму моего изображения, а также я хочу, чтобы он принял эту форму, потому что я должен сохранить ее после модификации.

Sergey Alexandrovich Kryukov

Чего вы хотите достичь?
--СА

akremb22

У меня есть некоторые tiff изображения для чтения некоторые из них могут быть не в нужной форме я хочу добавить флип 90° пользователь нажимает на него до тех пор, пока изображение не вернется в нужную форму и когда он нажмет на флип изображение будет сохранено(заменено) на диске в фактическом из выбранного пользователем

2 Ответов

Рейтинг:
1

C_Johnson

Привет,

Ваша проблема заключается в том, что каждый раз, когда вы поворачиваете свое изображение, вы используете свое хранилище изображений, так как его вращение установлено на 90 градусов, оно больше не будет вращаться, и это довольно просто обойти. Просто объявите int для хранения вашего угла поворота установите его равным 0 и добавляйте 90 градусов каждый раз, когда вы вызываете свою функцию.


int Rotate_angle = 0;

private void Button_Click(object sender, RoutedEventArgs e)
{
        TransformedBitmap TempImage = new TransformedBitmap();
 
        TempImage.BeginInit();
        TempImage.Source = MyImageSource; // MyImageSource of type BitmapImage

        RotateTransform transform = new RotateTransform(Rotate_angle+=90);
        TempImage.Transform = transform;
        TempImage.EndInit();
 
        image1.Source = TempImage ;
}



Гораздо более простой метод, если у вас есть изображение, отображаемое в элементе управления изображением с именем "img", как это

<grid>
    <stackpanel>
        <Image Name="img" Source="01.jpg"/>


        <Button Click="Button_Click" Content="CLICK"/>
    </stackpanel>
</grid>


стоит ли ставить это как свой код позади;

int Rotate_angle = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
        img.RenderTransformOrigin = new Point(0.5, 0.5);
        img.RenderTransform = new RotateTransform(Rotate_angle+=45);
}


Этот способ чище и позволяет вращаться на разные углы.

Надеюсь, это вам поможет
Овации
Крис


C_Johnson

Пожалуйста, извините теги <pre lang"">/pre>, если они видны, так как они предназначены для отображения блоков кода, однако что - то, должно быть, пошло не так- Ура Крису

BobJanova

Я обновил ваше решение, чтобы правильно отформатировать его. Вы выбрали "рассматривать этот пост как обычный текст".

C_Johnson

Спасибо, я пытался понять, была ли это проблема, но она не сработала, когда я выбрал и повторно выбрал ее, я предполагаю, что это была просто проблема браузера, большое спасибо за правильное переформатирование - Крис

Рейтинг:
0

akremb22

это относится к типу растрового изображения и RotateFlip не существует в растровом изображении

Sergey Alexandrovich Kryukov

OP использует WPF. Внимательно прочитать.
--СА

[no name]

у меня только что появилась идея