/// <summary> /// Attempts to generate a transparency key from an r,g,b byte color. /// </summary> /// <param name="r">Red component</param> /// <param name="g">Green component</param> /// <param name="b">Blue component</param> /// <returns></returns> internal static DDCOLORKEY GenerateColorKey(byte r, byte g, byte b) { // This may not be perfect since we are going to have to average // different bit depths together var ddck = new DDCOLORKEY(); var ddsd2 = new DDSURFACEDESC2(); ((DirectX7GraphicsEngine)(GraphicsEngine.Current)).DirectDraw.GetDisplayMode(ref ddsd2); var bBitCount = CountBits(ddsd2.ddpfPixelFormat.lBBitMask); var gBitCount = CountBits(ddsd2.ddpfPixelFormat.lGBitMask); var rBitCount = CountBits(ddsd2.ddpfPixelFormat.lRBitMask); var bBitMask = ddsd2.ddpfPixelFormat.lBBitMask; var gBitMask = ddsd2.ddpfPixelFormat.lGBitMask >> bBitCount; var rBitMask = ddsd2.ddpfPixelFormat.lRBitMask >> (gBitCount + bBitCount); var bValue = (b / 255) * bBitMask; var gValue = (g / 255) * gBitMask; var rValue = (r / 255) * rBitMask; ddck.low = (rValue << (gBitCount + bBitCount)) + (gValue << bBitCount) + bValue; ddck.high = ddck.low; return(ddck); }
/// <summary> /// Attempts to generate a transparency key from an r,g,b byte color. /// </summary> /// <param name="r">Red component</param> /// <param name="g">Green component</param> /// <param name="b">Blue component</param> /// <returns></returns> public static DDCOLORKEY GenerateColorKey(byte r, byte g, byte b) { // This may not be perfect since we are going to have to average // different bit depths together var ddck = new DDCOLORKEY(); var ddsd2 = new DDSURFACEDESC2(); ManagedDirectX.DirectDraw.GetDisplayMode(ref ddsd2); var bBitCount = CountBits(ddsd2.ddpfPixelFormat.lBBitMask); var gBitCount = CountBits(ddsd2.ddpfPixelFormat.lGBitMask); var rBitCount = CountBits(ddsd2.ddpfPixelFormat.lRBitMask); var bBitMask = ddsd2.ddpfPixelFormat.lBBitMask; var gBitMask = ddsd2.ddpfPixelFormat.lGBitMask >> bBitCount; var rBitMask = ddsd2.ddpfPixelFormat.lRBitMask >> (gBitCount + bBitCount); var bValue = (b/255)*bBitMask; var gValue = (g/255)*gBitMask; var rValue = (r/255)*rBitMask; ddck.low = (rValue << (gBitCount + bBitCount)) + (gValue << bBitCount) + bValue; ddck.high = ddck.low; return ddck; }
internal ColorKey(DDCOLORKEY key) { High = key.high; Low = key.low; }