Windows phone 7 尝试创建WriteableBitmap实例时WP7崩溃
各位,我在将图片保存到媒体库时遇到了一个奇怪的问题,我的应用程序崩溃了,没有出现异常。这是我的保存代码Windows phone 7 尝试创建WriteableBitmap实例时WP7崩溃,windows-phone-7,Windows Phone 7,各位,我在将图片保存到媒体库时遇到了一个奇怪的问题,我的应用程序崩溃了,没有出现异常。这是我的保存代码 using (MemoryStream stream = new MemoryStream()) { try { WriteableBitmap bitmap = new WriteableBitmap(InkPrest, InkPrest.RenderTransform); // Crash here, the actualHeight of InkPrest
using (MemoryStream stream = new MemoryStream())
{
try
{
WriteableBitmap bitmap = new WriteableBitmap(InkPrest, InkPrest.RenderTransform); // Crash here, the actualHeight of InkPrest is 2370.0
bitmap.SaveJpeg(stream, (int)InkPrest.ActualWidth, (int)InkPrest.ActualHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
MediaLibrary library = new MediaLibrary();
library.SavePicture(DateTime.Now.ToString(), stream.GetBuffer());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我已经一步一步地调试了,应用程序崩溃了
WriteableBitmap bitmap = new WriteableBitmap(InkPrest, InkPrest.RenderTransform); // Crash here, the actualHeight of InkPrest is 2370.0
有解决这个问题的办法吗
============================================
尝试保存几个图像
该元素为704*2370
TranslateTransform transform = new TranslateTransform();
transform.Transform(new Point(0,0));
double MaxHeight = 800;
double height = InkPrest.ActualHeight;
int saveCount = 0;
int succeedCount = 0;
while (height > 0)
{
using (MemoryStream stream = new MemoryStream())
{
try
{
double actualRenderHeight = Math.Min(height, MaxHeight);
WriteableBitmap bitmap = new WriteableBitmap((int)InkPrest.ActualWidth, (int)actualRenderHeight);
bitmap.Render(InkPrest, transform); //Crash here, also no exception.
bitmap.Invalidate();
height -= actualRenderHeight;
transform.Y -= actualRenderHeight;
bitmap.SaveJpeg(stream, (int)InkPrest.ActualWidth, (int)actualRenderHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
MediaLibrary library = new MediaLibrary();
Picture pic = library.SavePicture(manuscriptFile.Title + DateTime.Now.ToString(), stream.GetBuffer());
saveCount++;
if (pic != null)
{
succeedCount++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
检查您是在uithread中实例化writeablebitmap还是在其他创建的线程中实例化writeablebitmap。您需要在uithread中创建writeablebitmap。检查您是在uithread中实例化writeablebitmap还是在其他创建的线程中实例化writeablebitmap。您需要在uithread中创建writeablebitmap。这是在emulator上,还是仅在真实设备上?在emulator和设备上。崩溃也不例外。我想崩溃的原因是我的照片比2000年长。我正在测试它。我想这就是原因。2048是我认为的极限。这是在模拟器上,还是仅在真实设备上?在模拟器和设备上。崩溃也不例外。我想崩溃的原因是我的照片比2000年长。我正在测试它。我想这就是原因。2048年是我认为的极限。