嗨,大家好,我在我的一个页面上显示了一张照片.
我在肖像模式下拍摄照片,它可以正常工作.
当我在下一个视图中显示图片时,它将照片视为在Landscape中拍摄的.
所以我需要通过-90旋转图片/图像来纠正这个问题.
这是我的.XAML的相关代码
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanelx" Grid.Row="1" Margin="0,0,0,0">
</Grid>
Run Code Online (Sandbox Code Playgroud)
这是我加载照片并将其放入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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想在加载后对图像进行简单的旋转.我可以在iOS中做到这一点,但我的C#技能比糟糕还差.
有人可以就此提出建议吗?
非常感谢,-Cake
如果图像是在xaml中声明的,您可以像这样旋转它:
//XAML
<Image.RenderTransform>
<RotateTransform Angle="90" />
</Image.RenderTransform>
Run Code Online (Sandbox Code Playgroud)
同样的事情也可以通过c#来完成.如果你总是旋转图像,那么在xaml中执行它是更好的选择
//C#
((RotateTransform)image.RenderTransform).Angle = angle;
Run Code Online (Sandbox Code Playgroud)
请试试这个:
RotateTransform rt = new RotateTransform();
rt.Angle = 90;
image.RenderTransform = rt;
Run Code Online (Sandbox Code Playgroud)