3

自分のページの1つで撮った写真を表示します。

ポートレートモードで写真をキャプチャしましたが、問題なく動作します。

次のビューで写真を表示すると、写真は横向きで撮影されたように扱われます。

したがって、これを修正するには、画像/画像を-90回転させる必要があります。

これが私の.XAMLの関連コードです:

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanelx" Grid.Row="1" Margin="0,0,0,0">
    </Grid>

写真を読み込んでContentPanelに入れる方法は次のとおりです。

void loadImage()
    {
        // The image will be read from isolated storage into the following byte array

        byte[] data;

        // Read the entire image in one go into a byte array

        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {

            // Open the file - error handling omitted for brevity

            // Note: If the image does not exist in isolated storage the following exception will be generated:

            // System.IO.IsolatedStorage.IsolatedStorageException was unhandled 

            // Message=Operation not permitted on IsolatedStorageFileStream 

            using (IsolatedStorageFileStream isfs = isf.OpenFile("0.jpg", FileMode.Open, FileAccess.Read))
            {

                // Allocate an array large enough for the entire file

                data = new byte[isfs.Length];



                // Read the entire file and then close it

                isfs.Read(data, 0, data.Length);

                isfs.Close();

            }
        }



        // Create memory stream and bitmap

        MemoryStream ms = new MemoryStream(data);

        BitmapImage bi = new BitmapImage();

        // Set bitmap source to memory stream

        bi.SetSource(ms);

        // Create an image UI element – Note: this could be declared in the XAML instead

        Image image = new Image();

        // Set size of image to bitmap size for this demonstration

        image.Height = bi.PixelHeight;

        image.Width = bi.PixelWidth;

        // Assign the bitmap image to the image’s source

        image.Source = bi;

        // Add the image to the grid in order to display the bit map

        ContentPanelx.Children.Add(image);
        
    }
}

これをロードした後、画像を単純に回転させることを考えています。私はiOSでこれを行うことができますが、私のC#はスキルが悪いよりも悪いです。

誰かがこれについてアドバイスできますか?

4

2 に答える 2

7

画像がxamlで宣言されている場合は、次のように回転できます。

//XAML
    <Image.RenderTransform>     
    <RotateTransform Angle="90" /> 
      </Image.RenderTransform>

同じことがc#でも実行できます。常に画像を回転させる場合は、xamlで画像を回転させる方が適切です。

//C#
((RotateTransform)image.RenderTransform).Angle = angle;

これをお試し下さい:

RotateTransform rt = new RotateTransform();
            rt.Angle = 90;

            image.RenderTransform = rt;
于 2012-04-26T09:52:50.647 に答える
-1

画像のRenderTransformプロパティに使用するRotateTransformオブジェクトを作成できます。これにより、WPFはレンダリング時にイメージコントロールを回転させます。

画像を中心に回転させたい場合は、以下に示すように、回転の原点も設定する必要があります。

RotateTransform rt = new RotateTransform();
rt.Angle = 90;
image.RenderTransform = rt;
image.RenderTransformOrigin = new Point(0.5, 0.5);
于 2016-05-09T10:13:11.207 に答える