Как нарисовать текст, заполненный картиной в C#

В этом примере показано, как вы можете нарисовать текст, заполненный изображением. Он использует два изображения, добавленные в проект в качестве ресурсов.

(Чтобы добавить ресурсы в проект, откройте меню «Проект» и выберите команду «Свойства» в самом низу. На странице «Свойства» перейдите на вкладку «Ресурсы». Теперь вы можете использовать раскрывающееся меню «Добавить ресурс», чтобы добавить существующие или новые файлы к ресурсам программы.

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

// Сделайте изображение.
private void Form1_Load(object sender, EventArgs e)
{
    // Сделайте растровое изображение, которое будет отображаться.
    Bitmap bm = new Bitmap(
        this.ClientSize.Width, this.ClientSize.Height);
    using (Graphics gr = Graphics.FromImage(bm))
    {
        gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
        gr.Clear(this.BackColor);

        // Сделайте текст заполненным одним большим изображением.
        // Создаем кисть, содержащую изображение.
        using (TextureBrush the_brush =
            new TextureBrush(Properties.Resources.ColoradoFlowers))
        {
            // Рисуем текст.
            using (Font the_font = new Font("Times New Roman",
                150, FontStyle.Bold))
            {
                gr.DrawString("Flowers", the_font, the_brush, 0, 0);
            }
        }
        ...

Этот код создает связанный с ним объект Bitmap и Graphics. Он устанавливает Graphics объект TextRenderingHint, чтобы сделать текст более плавным.

Далее код создает TextureBrush, содержащий большое изображение, содержащееся в ресурсе ColoradoFlowers. Он создает большой шрифт, а затем использует DrawString для рисования текста, заполняя его кистью.

Примечание. В зависимости от того, где текст нарисован и где происхождение кисти, изображение может не соответствовать тексту. Например, край изображения может проходить через середину текста. В этом случае DrawString будет повторять изображение по мере необходимости, но вы можете увидеть границу между двумя копиями изображения, и это может выглядеть уродливым. При необходимости вы можете использовать метод TranslateTransform кисти, чтобы переместить начало кисти, чтобы оно лучше соответствовало тексту.

После рисования первой части текста программа использует следующий код для рисования второй.

        // Сделайте текст заполнен черепичным изображением.
        // Создаем кисть, содержащую изображение.
        using (TextureBrush the_brush =
            new TextureBrush(Properties.Resources.Smiley))
        {
            // Рисуем текст.
            using (Font the_font = new Font("Times New Roman",
                150, FontStyle.Bold))
            {
                gr.DrawString("Smile!", the_font, the_brush, 75, 175);
            }
        }
    }

    // Отображение результата.
    this.BackgroundImage = bm;
}

Источник: http://csharphelper.com/blog/2014/09/draw-text-filled-with-a-picture-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector