2010-04-08 21 views
2

装我要带一旦图像加载,这里的快照是一个代码段:如何检查如果图像在Silverlight

imageBrush.ImageOpened + =(发件人,E) = > { doSomething(); };

这个代码片段的一个问题是,如果图像刷已经加载,事件不会被解雇,所以我需要一种方法来验证图像已经加载,但似乎没有“IsLoaded “在silverlight的财产。你能提出一个简单的解决方法吗?

+0

检查实际高度或宽度是否不同? – 2010-04-08 06:38:29

+0

你能解释你如何使用'ImageBrush'拍摄快照吗?你为什么不使用'Image'控件?我相信杰夫在他的评论中提到了“图片”控件。假设您没有自己设置,图像控件Width属性将保持为0,直到源完全加载。 – AnthonyWJones 2010-04-08 06:57:34

回答

0

您可以检查Image控件的Width属性是否为非零来测试其加载。

这可能是因此,你也可以使用BitmapSourcePixelWidth属性来执行相同的测试: -

bool isLoaded = ((BitmapSource)ImageBrush.ImageSource).PixelWidth == 0; 

我没有这个测试自己,但它似乎是合乎逻辑。

+0

感谢您的回复,但我还有一个问题,我想知道您是否可以帮助我解决这个问题。 接收到来自服务器的画布,并通过搜索路径从画布中提取图像画笔。 综上所述,Canvas - > Path - > Path.Fill - > ImageBrush。 现在,我想用WriteableBitmap的加载时采取图像刷的快照,并在这里是我做过什么 – umlgorithm 2010-04-08 13:13:14

+0

VAR imageBrushes = VisualTreeUtility.FindVisualChildren (画布) 。凡(I => i.Fill.GetType() == typeof(ImageBrush)) .Select(p => p.Fill); foreach(var image in imageBrushes) { image.ImageOpened + = delegate {//永远不会到达这里! }; 如果(image.isLoaded()){ // 我做基于您的代码段 延伸//它送过来,当它具有非零宽度 }} – umlgorithm 2010-04-08 13:14:31

+1

@umlgorithm:这将是非常非常好因为你可以发布另一个问题,而不是尝试在回答中挤压注释和其他问题,因为你可以看到代码在评论中格式不是很好。评论实际上是用于讨论具体的答案或问题,或者是针对澄清答案的小问题。 – AnthonyWJones 2010-04-08 14:36:26

相关问题