/// <summary> /// Get X position on canvas based on canvas width, padding and horizontal orientation /// </summary> /// <param name="formatting"></param> /// <param name="canvasWidth"></param> /// <returns></returns> private static float GetXPosition(SlideTextFormatting.TextBoxFormatting formatting, float canvasWidth) { float x = formatting.HorizontalPadding; if (formatting.HorizontalOrientation == HorizontalOrientation.Center) { x = canvasWidth / 2f; } else if (formatting.HorizontalOrientation == HorizontalOrientation.Right) { x = canvasWidth - formatting.HorizontalPadding; } return(x); }
/// <summary> /// Draws a text box at the given coordinates /// </summary> /// <param name="gr">Graphics area to draw on</param> /// <param name="text">Text (array element per line)</param> /// <param name="x">Horizontal starting position</param> /// <param name="y">Vertical starting position</param> /// <param name="formatting">Formatting</param> /// <param name="upwards">Calculate upwards from vertical starting position</param> /// <param name="lineSpacing">Line spacing</param> private void DrawTextBox(Graphics gr, string[] text, float x, float y, SlideTextFormatting.TextBoxFormatting formatting, bool upwards, int lineSpacing) { var numberOfLines = text.Length; // Measure text height var textBlockHeight = gr.MeasureString(string.Join(Environment.NewLine, text), formatting.Text.Font).Height; // Calculate y starting position if measuring upwards if (upwards) { var lineSpacingHeight = ((numberOfLines - 1) * lineSpacing); y -= textBlockHeight + lineSpacingHeight; } // Text height var textLineHeight = (textBlockHeight / numberOfLines); var lineHeight = textLineHeight + lineSpacing; // Draw lines DrawLines(gr, text, x, y, formatting.Text, formatting.HorizontalOrientation, lineHeight); }