如何在MonoTouch中进行实时运动模糊?
当滚动惯性图库时,我需要在UIImageView上应用运动模糊效果,以强度和方向为参数,就像在Photoshop中一样。
我在CocoaTouch或CoreAnimation或iOS SDK中的任何地方找不到任何模糊或运动模糊过滤器。
是否有一些2D效果库可用从MonoTouch实时模糊滤镜,是好的iPhone?
我找到了一个很好的开源库,可以在UIImage上做很多效果:
https://github.com/gdawg/uiimage-dsp它还使用了加速框架来加快iOS 4.0的速度。
现在,如果有一个MonoTouch包装器就好了。
这篇文章描述了一种可能的方法:
http://martinbowling.com/post/Recreating-the-Awesome-UrbanSpoon-UI-Effect-In-MonoTouch.aspx如果你想使用苹果在WWDC上演示的模糊效果(尽管不是实时的!)我把他们的UIImage分类做了一个本地移植。
- https://github.com/lipka/MonoTouch.UIImageEffects
获得模糊有点乏味,但可行:
// 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);