首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ios xamarin c#中获得正确的触摸像素值

如何在ios xamarin c#中获得正确的触摸像素值
EN

Stack Overflow用户
提问于 2016-07-23 18:00:01
回答 1查看 247关注 0票数 0

你好,我正在尝试在Xamarin C#中获取触摸像素的颜色,但我有时会得到错误的值,我得到R=255,G=0,B=0,A=0我的代码中有什么问题?

代码语言:javascript
复制
 private UIColor ColorOfPoint(CGPoint point)
    {
        byte[] pixel = {0,0,0,0};

        using(CGColorSpace oColorSpace = CGColorSpace.CreateDeviceRGB())
        using(CGBitmapContext oContext = new CGBitmapContext(pixel,
                                                     1, 1, 8, 4, oColorSpace, CGBitmapFlags.PremultipliedLast & CGBitmapFlags.AlphaInfoMask))
        {
            oContext.TranslateCTM(-point.X,-point.Y);
            img.Layer.RenderInContext(oContext);
            oContext.Dispose();
            oColorSpace.Dispose();
        }

        UIColor color = new UIColor(pixel[0]/255,pixel[1]/255,pixel[2]/255,pixel[3]/255);
        return color;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-23 20:08:42

使用UIColor.FromRGBA而不是new UIColor(....)

我是这样做的:

代码语言:javascript
复制
byte[] alphaPixel = { 0, 0, 0, 0 };
protected UIColor GetColorAtTouchPoint(CGPoint point)
{
    var colorSpace = CGColorSpace.CreateDeviceRGB();
    var bitmapContext = new CGBitmapContext(alphaPixel, 1, 1, 8, 4, colorSpace, CGBitmapFlags.PremultipliedLast);
    bitmapContext.TranslateCTM(-point.X, -point.Y);
    view.Layer.RenderInContext(bitmapContext);
    return UIColor.FromRGBA(alphaPixel[0], alphaPixel[1], alphaPixel[2], alphaPixel[3]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38540482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档