我正在编写一个Windows Phone 8.1(WINRT)应用程序。我正在使用fileopenpicker从库中选择图片,然后在我的应用程序中显示它。但是我想让用户在图片在应用程序中显示之前可以裁剪这个图片。
在Windows Phone 8中,我们使用Photochooser任务并设置width属性和裁剪选项自动出现。
现在我正在尝试使用这个: Windows Phone 8.0: Image Crop With Rectangle 但在Windows Phone 8.1中没有WriteableBitmap.Pixels。那么,在WriteableBitmap.Pixels之外,应该使用什么?
在Windows Phone 8中,我们使用Photochooser任务并设置width属性和裁剪选项自动出现。
现在我正在尝试使用这个: Windows Phone 8.0: Image Crop With Rectangle 但在Windows Phone 8.1中没有WriteableBitmap.Pixels。那么,在WriteableBitmap.Pixels之外,应该使用什么?
// Create a new WriteableBitmap. The size of the bitmap is the size of the cropping rectangle
// drawn by the user, multiplied by the image size ratio.
WB_CroppedImage = new WriteableBitmap((int)(widthRatio * Math.Abs(Point2.X - Point1.X)), (int)(heightRatio * Math.Abs(Point2.Y - Point1.Y)));
// Calculate the offset of the cropped image. This is the distance, in pixels, to the top left corner
// of the cropping rectangle, multiplied by the image size ratio.
int xoffset = (int)(((Point1.X < Point2.X) ? Point1.X : Point2.X) * widthRatio);
int yoffset = (int)(((Point1.Y < Point2.Y) ? Point1.Y : Point2.X) * heightRatio);
// Copy the pixels from the targeted region of the source image into the target image,
// using the calculated offset
if (WB_CroppedImage.Pixels.Length > 0)
{
for (int i = 0; i < WB_CroppedImage.Pixels.Length; i++)
{
int x = (int)((i % WB_CroppedImage.PixelWidth) + xoffset);
int y = (int)((i / WB_CroppedImage.PixelWidth) + yoffset);
WB_CroppedImage.Pixels[i] = WB_CapturedImage.Pixels[y * WB_CapturedImage.PixelWidth + x];
}
// Set the source of the image control to the new cropped bitmap
FinalCroppedImage.Source = WB_CroppedImage;
}
else
{
FinalCroppedImage.Source = null;
}
.PixelBuffer
,请参见:https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.media.imaging.writeablebitmap.pixelbuffer.aspx - Chubosaurus Software