Ejemplo n.º 1
0
        public int PickSprite(int x, int y)
        {
            var    sc = SourceImage.GetPixelRowSpan(y)[x];
            double g  = Helpers.ToGray(sc);

            double sg =
                (SpriteGrayMax - SpriteGrayMin)
                / (SourceGrayMax - SourceGrayMin)
                * (g - SourceGrayMin)
                + SpriteGrayMin
            ;
            //Log.Debug("Pick x="+x+" y="+y+" sg="+sg+" ["
            //	+"("+SpriteGrayMax+" - "+SpriteGrayMin+")"
            //	+" / ("+SourceGrayMax+" - "+SourceGrayMin+")"
            //	+" * ("+g+" - "+SourceGrayMin+") + "+SpriteGrayMin
            //	+"]");
            //Log.Debug(sg+" = ("+SpriteGrayMax+" - "+SpriteGrayMin+") / ("+SourceGrayMax+" - "+SourceGrayMin+") * "+g);

            //find closest sprite gray to sg
            int index = FindClosestIndex(SpriteGrayMap, sg);

            //Log.Debug("index = "+index+" "+SpriteGrayMap.Count);
            return(SpriteGrayMap[index].Index);
        }