Graphics.DrawString center w printdocument width

Próbuję wyśrodkować ciąg na dokumencie wydruku. Wykonałem następujące czynności z obrazem i działa, ale nie działa tak samo z łańcuchem.

Oto kod, którego użyłem do wyśrodkowania obrazu

e.Graphics.DrawImage(logo, (e.MarginBounds.Width / 2) - (logo.Width / 2), height);

Tekst, który próbuję wyśrodkować, jest dostarczany z karty w TabControl

 using (var sf = new StringFormat())
 {
       height = logo.Height + 15;
       sf.LineAlignment = StringAlignment.Center;
       sf.Alignment = StringAlignment.Center;
       e.Graphics.DrawString(tabData.Text, new Font(this.Font.Name, 10),
            new SolidBrush(tabData.ForeColor),
            (e.MarginBounds.Width / 2) - (txtData.Width / 2), height, sf);
  }

Próbowałem również poniżej i użyłem string_size.Width / 2 zamiast txtData.Width

SizeF string_size = e.Graphics.MeasureString(tabData.Text, tabData.Font);

EDYTOWAĆ

Aktualny pełny kod

        float height = 0;
        tabData.Text = "Date Range: 02/02/2010 - 08/09/2013"; //set just for testing
        using (var logo = Properties.Resources.title)
        {
            e.Graphics.DrawImage(logo, e.PageBounds.Left + (e.MarginBounds.Width / 2) - (logo.Width / 2), height);
            height = logo.Height + 15;
        }

        using (var sf = new StringFormat())
        {

            sf.LineAlignment = StringAlignment.Center;
            sf.Alignment = StringAlignment.Center;
            e.Graphics.DrawString(tabData.Text, new Font(this.Font.Name, 10), new SolidBrush(tabData.ForeColor), e.PageBounds.Left + (e.PageBounds.Width / 2), height, sf);
        }

Nie rozumiem, dlaczego muszę użyć mieszaniny PageBounds i MarginBounds, aby wyśrodkować obraz, a następnie wyśrodkować go zarówno na MarginBounds, jak i na PageBounds

questionAnswers(1)

yourAnswerToTheQuestion