Как создать изображение на основе текста с заданной шириной и без заполнения в C # - PullRequest
0 голосов
/ 17 января 2019

Я хочу сохранить данный текст в виде изображения. Изображение должно иметь фиксированную ширину (200px в моем примере). Вокруг текста не должно быть пробелов, отступов или чего-либо еще. Независимо от того, какой текст вводится, ширина не должна меняться, только высота текста. Это работает. Однако вокруг текста все еще есть белые отступы, и текст обрезается с правой стороны.

Я уже пытался изменить StringFormat.GenericTypographic, а также пытался без AntiAlias, но я не получаю его на работу. Может кто-нибудь помочь мне заставить это работать?

    private void button1_Click(object sender, EventArgs e)
    {
        Font font = new Font("Arial", 1000, FontStyle.Regular);
        Image i = DrawText("TEST MY STRING", font, Color.Red, Color.White);
        i.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    }

    private Image DrawText(String text, Font font, Color textColor, Color backColor)
    {
        Image img = new Bitmap(1, 1);
        Graphics drawing = Graphics.FromImage(img);
        drawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
        SizeF sz = drawing.MeasureString(text, font, 0, StringFormat.GenericTypographic);

        img.Dispose();
        drawing.Dispose();

        /* Set maximum width of string. */
        int textWidth = 200;
        float sf = textWidth / sz.Width;
        int textHeight = (int)(sz.Height * sf);


        img = new Bitmap(textWidth, textHeight);
        drawing = Graphics.FromImage(img);
        drawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
        drawing.Clear(backColor);

        drawing.ScaleTransform(sf, sf);
        drawing.DrawString(text, font, Brushes.Black, 0, 0, new StringFormat(StringFormatFlags.NoWrap | StringFormatFlags.NoClip));
        drawing.Save();


        drawing.Dispose();
        return img;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...