示例#1
0
        /// <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);
        }
示例#2
0
        /// <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;
        }
示例#3
0
 internal ColorKey(DDCOLORKEY key)
 {
     High = key.high;
     Low  = key.low;
 }
示例#4
0
 internal ColorKey(DDCOLORKEY key)
 {
     High = key.high;
     Low = key.low;
 }