2016-07-23 7 views
0

こんにちは、私はXamarin C# のタッチでピクセルの色を取得しようとしていますが、時々間違った値を取得、私はR = 255、G = 0 、B = 0、A = 0 私のコードで何が間違っていますか?ios xamarinのタッチでピクセルの正しい値を取得する方法#

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

関連する問題