在Windows Phone中旋转图像

时间:2012-04-26 09:45:32

标签: c# windows-phone-7 xaml

大家好,我在我的一个页面上显示了一张照片。

我以人像模式拍摄照片,效果还可以。

当我在下一个视图中显示图片时,它会将照片视为在横向拍摄时拍摄的。

所以我需要将图片/图片旋转-90来纠正这个问题。

以下是我的.XAML的相关代码

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

以下是加载照片并将其放入ContentPanel的方法。

void loadImage()         {             //图像将从隔离存储器读入以下字节数组

        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#技能比糟糕还要差。

有人可以就此提出建议吗?

非常感谢, -Cake

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:-1)

您可以创建一个RotateTransform对象以用于图像的RenderTransform属性。这将导致WPF在渲染时旋转Image控件。

如果你想围绕它的中心旋转图像,你还需要设置旋转原点,如下所示:

RotateTransform rt = new RotateTransform();
rt.Angle = 90;
image.RenderTransform = rt;
image.RenderTransformOrigin = new Point(0.5, 0.5);