如何在Monotouch中对UIImageView进行运动模糊效果?

时间:2011-09-19 18:32:14

标签: iphone ios uiimageview xamarin.ios blur

在MonoTouch中进行实时运动模糊的方法是什么?

当滚动惯性画廊时,我需要在UIImageView上应用运动模糊效果,强度和方向作为参数,如Photoshop中所示。

我无法在CocoaTouch或CoreAnimation中找到任何模糊或运动模糊滤镜,也无法在iOS SDK中的任何位置找到。

是否有一些可以从MonoTouch使用的2D效果库以及适用于iPhone的实时模糊滤镜?

提前致谢。

3 个答案:

答案 0 :(得分:1)

我找到了一个很好的开源库来对UIImage做很多效果:

https://github.com/gdawg/uiimage-dsp

它还使用Accelerated框架在iOS 4.0上加速了一些事情。

现在,如果只有MonoTouch包装器......

答案 1 :(得分:0)

答案 2 :(得分:0)

如果你想使用在WWDC上演示的模糊Apple(虽然不是实时的!)我创建了他们的UIImage类别的本地端口。

获得模糊有点单调乏味,但可行:

// Helper method to create an image snapshot of the view hierarchy
UIImage SnapshotImageWithScale (UIView view, float scale)
{
    UIGraphics.BeginImageContextWithOptions (view.Bounds.Size, false, scale);
    view.DrawViewHierarchy (view.Bounds, true);

    UIImage image = UIGraphics.GetImageFromCurrentImageContext ();
    UIGraphics.EndImageContext ();

    return image;
}

...

// Create snapshot of the parent view controller (this can be the superview or anything else)
UIImage snapshot = SnapshotImageWithScale (parentView, UIScreen.MainScreen.Scale);

// Blur the snapshot with the specified radius and tint color
snapshot = snapshot.ApplyBlur (6.0f, UIColor.FromWhiteAlpha (0.0f, 0.6f), 0.8f, null);

// Create an UIImageView to display the blurred snapshot
UIImageView snapshotView = new UIImageView {
    Frame = new RectangleF (0, 0, View.Bounds.Width, View.Bounds.Height),
    Image = snapshot,
};
View.AddSubview (snapshotView);