为什么图片加载不出来?

游荡孔明 2013-09-12 12:42:14
分裂图片--一张照片放进BitmapImage里面然后利用WriteableBitmap将图片分成4块

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Name="imgUL" Grid.Row="0" Grid.Column="0" Margin="2"/>
<Image Name="imgUR" Grid.Row="0" Grid.Column="1" Margin="2"/>
<Image Name="imgLL" Grid.Row="1" Grid.Column="0" Margin="2"/>
<Image Name="imgLR" Grid.Row="1" Grid.Column="1" Margin="2"/>
</Grid>




int picturewidth;
int pictureheight;
public MainPage()
{
InitializeComponent();
picturewidth =((int)ContentPanel.ActualWidth)- 8;
pictureheight = ((int)ContentPanel.ActualHeight) - 8;
// 用于本地化 ApplicationBar 的示例代码
//BuildLocalizedApplicationBar();

}

protected override void OnManipulationStarted(ManipulationStartedEventArgs args)
{
BitmapImage bitmapImage = new BitmapImage(new Uri("/Images/123.png", UriKind.Relative));
bitmapImage.DecodePixelHeight = pictureheight;
bitmapImage.DecodePixelWidth = picturewidth;
Image imgBase = new Image();
imgBase.Source = bitmapImage;
imgBase.Stretch = Stretch.None;
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage.PixelWidth / 2, bitmapImage.PixelHeight / 2);
writeableBitmap.Render(imgBase, null);
writeableBitmap.Invalidate();
imgUL.Source = writeableBitmap;
writeableBitmap = new WriteableBitmap(bitmapImage.PixelWidth / 2, bitmapImage.PixelHeight / 2);
TranslateTransform translate = new TranslateTransform();
translate.X = -bitmapImage.PixelWidth / 2;
writeableBitmap.Render(imgBase, translate);
writeableBitmap.Invalidate();
imgUR.Source = writeableBitmap;
writeableBitmap = new WriteableBitmap(bitmapImage.PixelWidth / 2, bitmapImage.PixelHeight / 2);
translate.X = 0;
translate.Y = -bitmapImage.PixelHeight / 2;
writeableBitmap.Render(imgBase, translate);
writeableBitmap.Invalidate();
imgLL.Source = writeableBitmap;
writeableBitmap = new WriteableBitmap(bitmapImage.PixelWidth / 2, bitmapImage.PixelHeight / 2);
translate.X = -bitmapImage.PixelWidth / 2;
writeableBitmap.Render(imgBase, translate);
writeableBitmap.Invalidate();
imgLR.Source = writeableBitmap;
args.Complete();
args.Handled = true;
base.OnManipulationStarted(args);
}



有人说是什么图片异步加载问题,求解释
...全文
1122 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
游荡孔明 2013-09-13
  • 打赏
  • 举报
回复
引用 3 楼 NianHui 的回复:
BitmapImage bitmapImage = new BitmapImage(new Uri("/Images/123.png", UriKind.Relative)); //删掉这两行 bitmapImage.DecodePixelHeight = pictureheight; bitmapImage.DecodePixelWidth = picturewidth; 添加这一行 bitmapImage.CreateOptions = BitmapCreateOptions.None; 延迟加载的问题
可以了,这是为什么?
游荡孔明 2013-09-13
  • 打赏
  • 举报
回复
引用 5 楼 NianHui 的回复:
延迟加载引起的。 BitmapImage有三个设置图片数据源的方法。 1 构造函数; 2 UriSource属性; 3 SetSource(Stream)方法; 1和2会依据CreateOptions属性的值来决定何时加载图片 3是直接设置图片流,立马就加载出来了。 你的代码用时1 ,CreateOptions属性的默认值是DelayCreation,就是延迟,因为你的imgBase并未在UI呈现,所以BitmapImage就没有加载图片,导致图片宽高属性未0,后续几个WriteableBitmap也无法触发图片的加载。 如果不更改CreateOptions属性 在第一次创建WriteableBitmap 对象的时候如果 WriteableBitmap writeableBitmap = new WriteableBitmap(50, 50);随便写上一个宽高 writeableBitmap.Render(imgBase, null);执行下,也会触发BitmapImage去加载图片。
非常感谢
#blackheart 2013-09-13
  • 打赏
  • 举报
回复
延迟加载引起的。 BitmapImage有三个设置图片数据源的方法。 1 构造函数; 2 UriSource属性; 3 SetSource(Stream)方法; 1和2会依据CreateOptions属性的值来决定何时加载图片 3是直接设置图片流,立马就加载出来了。 你的代码用时1 ,CreateOptions属性的默认值是DelayCreation,就是延迟,因为你的imgBase并未在UI呈现,所以BitmapImage就没有加载图片,导致图片宽高属性未0,后续几个WriteableBitmap也无法触发图片的加载。 如果不更改CreateOptions属性 在第一次创建WriteableBitmap 对象的时候如果 WriteableBitmap writeableBitmap = new WriteableBitmap(50, 50);随便写上一个宽高 writeableBitmap.Render(imgBase, null);执行下,也会触发BitmapImage去加载图片。
#blackheart 2013-09-12
  • 打赏
  • 举报
回复
BitmapImage bitmapImage = new BitmapImage(new Uri("/Images/123.png", UriKind.Relative)); //删掉这两行 bitmapImage.DecodePixelHeight = pictureheight; bitmapImage.DecodePixelWidth = picturewidth; 添加这一行 bitmapImage.CreateOptions = BitmapCreateOptions.None; 延迟加载的问题
游荡孔明 2013-09-12
  • 打赏
  • 举报
回复
引用 1 楼 NianHui 的回复:
123.png属性是什么?是内容吗
是的
#blackheart 2013-09-12
  • 打赏
  • 举报
回复
123.png属性是什么?是内容吗

7,659

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧