示例#1
0
        public SpriteFont(SpriteSheet spriteSheet, string file, int glyphWidth, int glyphHeight, char startASCII, char endASCII, float charSpacing, float spaceWidth, float lineHeight, bool xtrim)
        {
            SpriteSheet = spriteSheet;
            CharSpacing = charSpacing;
            SpaceWidth  = spaceWidth;
            LineHeight  = lineHeight;

            start = startASCII;
            end   = endASCII;

            glyphs = new Sprite[end + 1];

            Platform.LoadImage(file, out int width, out int height, out byte[] imageData);
            Bitmap spriteData = new Bitmap(imageData, width, height);

            for (int i = start; i <= end; i++)
            {
                // Make sure loaded image is large enough
                // If image is not large enough, generate error glyphs
                if (width >= glyphWidth * (i - start) + glyphWidth)
                {
                    glyphs[i] = spriteSheet.AddSpriteFontGlyph(spriteData, new RectangleI(glyphWidth * (i - start), 0, glyphWidth, glyphHeight), xtrim);
                }
                else
                {
                    glyphs[i] = spriteSheet.AddSpriteFontGlyph(spriteData, new RectangleI(0, 0, glyphWidth.Min(width), glyphHeight.Min(height)), false);
                }
            }
        }