Silverlight 3中的图像裁剪

时间:2009-09-16 21:21:38

标签: silverlight graphics silverlight-3.0

我找到了solution that looks quite elegant,但我不明白它的行为。如果我在将我的图像添加到Canvas.Children集合之前应用裁剪算法它不起作用。为什么?理想情况下,我需要像Image Crop(Image source, int X, int Y, int width, int heigh)这样的函数,它返回一个新的裁剪图像实例,并且不需要将源/裁剪图像放置到Canvas。有可能吗?

2 个答案:

答案 0 :(得分:4)

我猜你遇到的问题是当你在WriteableBitmap上调用Render时,图像源还没有下载,所以Image不会在WriteableBitmap中呈现任何内容。

要解决此问题,您需要等待图像源下载;您可以处理Image.ImageOpened事件,以便在发生这种情况时收到通知。

答案 1 :(得分:0)

您可以使用可用作NuGet包的WriteableBitmapEx。

void Crop(Image source, string imageRelativePath, int x, int y, int width, int heigh)
{
    WriteableBitmap wb = BitmapFactory.New(1, 1)
                            .FromResource(imageRelativePath)
                            .Crop(x, y, width, heigh);
    wb.Invalidate();

    source.Source = wb;
}