2016-07-23 7 views
0

Привет, я пытаюсь получить цвет пикселя при касании в Xamarin C#, , но иногда получаю неправильные значения, я получаю R = 255, G = 0 , B = 0, A = 0 Что не так в моем коде?Как получить правильное значение пикселя при касании в ios xamarin C#

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; 
    } 

ответ

0

Использование UIColor.FromRGBA вместо new UIColor(....)

Это, как я:

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

странным образом вызывает значения RGB должны быть возвращены, чтобы быть 0, если вы нажмете за пределами определенной области изображения, В любом случае спасибо за ответ :) – vin