public static void DrawText(this Graphics g, DrawTextInformationGDI DrawData)
        {
            if (DrawData.Format == null)
            {
                DrawData.Format = new StringFormat();
            }

            //May 15th 2019- we now draw the string manually. None of this DrawString stuff.
            var characterpositions = MeasureCharacterSizes(g, DrawData.DrawFont, DrawData.Text);

            char[] drawcharacters = DrawData.Text.ToCharArray();
            g.PageUnit = GraphicsUnit.Pixel;
            for (int i = 0; i < drawcharacters.Length; i++)
            {
                //get the dimensions of this character

                char   drawcharacter = drawcharacters[i];
                PointF DrawPosition  = new PointF(characterpositions[i].Location.X + DrawData.Position.X, characterpositions[i].Location.Y + DrawData.Position.Y);
                DrawData.CharacterHandler.DrawCharacter(g, drawcharacter, DrawData, DrawPosition, characterpositions[i].Size, i, drawcharacters.Length, 1);
            }

            //Draw the foreground
            for (int i = 0; i < drawcharacters.Length; i++)
            {
                //get the dimensions of this character
                char   drawcharacter = drawcharacters[i];
                PointF DrawPosition  = new PointF(characterpositions[i].Location.X + DrawData.Position.X, characterpositions[i].Location.Y + DrawData.Position.Y);
                DrawData.CharacterHandler.DrawCharacter(g, drawcharacter, DrawData, DrawPosition, characterpositions[i].Size, i, drawcharacters.Length, 2);
            }
            //g.DrawString(DrawData.Text, DrawData.DrawFont, DrawData.ShadowBrush,DrawData.Position.X+DrawData.ShadowOffset.X, DrawData.Position.Y+DrawData.ShadowOffset.Y,DrawData.Format);
        }
Example #2
0
        public void Render(IStateOwner pOwner, Graphics pRenderTarget, MenuStateTextMenuItem Source, MenuStateMenuItemGDIPlusDrawData Element)
        {
            var useFont     = GetScaledFont(pOwner, Source.FontFace, Source.FontSize);
            var MeasureText = pRenderTarget.MeasureString(Source.Text, useFont);

            PointF DrawPosition = GetDrawPosition(Element.Bounds, MeasureText, Source.TextAlignment.GetGDIPlusAlignment());
            Brush  BackBrush    = new SolidBrush(Source.BackColor);

            if (Element.DrawState == MenuStateMenuItem.StateMenuItemState.State_Selected)
            {
                BackBrush = Brushes.DarkBlue;
            }

            pRenderTarget.FillRectangle(BackBrush, Element.Bounds);

            StringFormat central = new StringFormat();

            central.Alignment     = StringAlignment.Near;
            central.LineAlignment = StringAlignment.Near;
            Brush ForeBrush = new SolidBrush(Source.ForeColor);

            if (Element.DrawState == MenuStateMenuItem.StateMenuItemState.State_Selected)
            {
                ForeBrush = Brushes.Aqua;
            }
            Brush ShadowBrush = new SolidBrush(Source.ShadowColor);
            var   useStyle    = new DrawTextInformationGDI()
            {
                Text            = Source.Text,
                BackgroundBrush = Brushes.Transparent,
                DrawFont        = useFont,
                ForegroundBrush = ForeBrush,
                ShadowBrush     = ShadowBrush,
                Position        = DrawPosition,
                ShadowOffset    = new PointF(5f, 5f),
                Format          = central
            };

            if (Element.DrawState == MenuStateMenuItem.StateMenuItemState.State_Selected)
            {
                useStyle.CharacterHandler.SetPositionCalculator(new RotatingPositionCharacterPositionCalculatorGDI());
            }
            pRenderTarget.DrawText(useStyle);


            //            TetrisGame.DrawText(Target, useFont, Text, ForeBrush, ShadowBrush, DrawPosition.X, DrawPosition.Y, 5f, 5f, central);

            //Cheating...
            // Source.Draw(pOwner,pRenderTarget,Element.Bounds,Element.DrawState);
        }