ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-使用MonoTouch创建自定义图像滤镜

2019-11-22 09:09:17  阅读:380  来源: 互联网

标签:xamarin xamarin-ios image-processing ios c


我正在使用Xamarin for iOS即时创建合成图像.我有两张图像,一幅是基本图像(黑白),另一幅是用于滤色镜的alpha蒙版“贴图”.然后,在运行时提供RGB值,这样我就可以使合成图像成为应具有的颜色.

我已经找到了许多用于更改整个图像的解决方案,但是我很难找到一个很好的解决方案来创建仅对蒙版贴图中包含的区域(使用alpha值)进行着色的滤色器:

基本图片:

   

产生的图像(如果我告诉我要红色):

在MonoDroid中,我能够创建一个自定义ImageView并重写OnDraw方法,然后使用ColorMatrixColorFilter,其工作方式像一个超级按钮,但不知道如何在MonoTouch中完成相同的任务.

这是我为MonoDroid做的事情:

    protected override void OnDraw(Canvas canvas)
    {
        if (_alphaMask == null)
            _alphaMask = BitmapFactory.DecodeResource(Resources, GetDrawable("star_mask"));

        if(_image == null)
            _image = BitmapFactory.DecodeResource(Resources, GetDrawable("star"));

        AdjustColor(_color, canvas, _alphaMask, _image);
    }

    private static void AdjustColor(Color color, Canvas c, Bitmap alphaMask, Bitmap image)
    {
        float R = color.R;
        float G = color.G;
        float B = color.B;
        var maskPaint = new Paint();
        var mat = new[]
        {
            0, 0, 0, 0, R, //red
            0, 0, 0, 0, G, //green
            0, 0, 0, 0, B, //blue
            0, 0, 0, 1, 0  //alpha
        };
        ColorMatrix cm = new ColorMatrix(mat);
        maskPaint.SetColorFilter(new ColorMatrixColorFilter(cm));
        c.DrawBitmap(image, 0, 0, null);
        c.DrawBitmap(alphaMask, 0, 0, maskPaint);
    }

解决方法:

从苹果开发者网站:https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_filer_recipes/ci_filter_recipes.html

好像您在寻找什么(CIFilter).

标签:xamarin,xamarin-ios,image-processing,ios,c
来源: https://codeday.me/bug/20191122/2058619.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有