Рисование повернутого текста на изображение в C # - PullRequest
9 голосов
/ 01 ноября 2011

Я использую метод drawstring класса Graphics, чтобы нарисовать строку на изображении.

  g.DrawString(mytext, font, brush, 0, 0);

Я пытаюсь повернуть текст на угол с помощью функции поворота графического объекта, чтобы текст можно было нарисовать под любым углом. Как я могу это сделать с помощью поворота. Код поворота, который я использовал:

    Bitmap m = new Bitmap(pictureBox1.Image);
    Graphics x=Graphics.FromImage(m);
    x.RotateTransform(30);
    SolidBrush brush = new SolidBrush(Color.Red);
    x.DrawString("hi", font,brush,image.Width/2,image.Height/2);
//image=picturebox1.image
    pictureBox1.Image = m;

Текст нарисован под повернутым углом, но не в центре, как я хочу. Пожалуйста, помогите мне.

Ответы [ 2 ]

26 голосов
/ 01 ноября 2011

Недостаточно просто RotateTransform или TranslateTranform, если вы хотите центрировать текст. Вам также необходимо сместить начальную точку текста, измерив ее:

Bitmap bmp = new Bitmap(pictureBox1.Image);
using (Graphics g = Graphics.FromImage(bmp)) {
  g.TranslateTransform(bmp.Width / 2, bmp.Height / 2);
  g.RotateTransform(30);
  SizeF textSize = g.MeasureString("hi", font);
  g.DrawString("hi", font, Brushes.Red, -(textSize.Width / 2), -(textSize.Height / 2));
}

С Как повернуть текст в GDI +?

2 голосов
/ 01 ноября 2011

до g.DrawString(mytext, font, brush, 0, 0); использования g.RotateTransform(45);

...