Печатать звезды в C#

В этом примере показано, как вы можете печатать звезды с определенными размерами на C#. Недавно кто-то связался со мной, спрашивая, знаю ли я о программе, которая может печатать звезды. Он хотел создать флаги разных стран и должен был иметь возможность печатать звезды с различным количеством точек разных размеров. Он нашел пример Нарисуйте звезда с заданным количеством точек в C# и хотел что-то подобное, но с печатью. См. Этот пример для получения информации о том, как создавать точки звезды.

В этом примере добавлена возможность печати. Во время разработки я добавил в форму PrintPreviewDialog и PrintDocument. Свойству PrintPreviewDialog объекта Document объекта объекта задается объект PrintDocument.

Введите количество точек, которые должна иметь звезда, номер пропуска (объясняется в предыдущий пример ) и диаметр, который звезда должна иметь в миллиметрах. Когда вы нажимаете кнопку «Предварительный просмотр», следующий код отображает PrintPreviewDialog.

// Отображение диалогового окна печати.
private void btnPreview_Click(object sender, EventArgs e)
{
    ppdStar.ShowDialog();
}

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

// Нарисуем звезду.
private void pdocStar_PrintPage(object sender, PrintPageEventArgs e)
{
    try
    {
        // Преобразование mm в дюймы * 100.
        float diameter = float.Parse(txtRadius.Text);
        diameter = diameter / 25.4f * 100f;

        float cx = (e.MarginBounds.Left + e.MarginBounds.Right) / 2f;
        float cy = (e.MarginBounds.Top + e.MarginBounds.Bottom) / 2f;
        float x = cx - diameter / 2f;
        float y = cy - diameter / 2f;

        RectangleF rect = new RectangleF(x, y, diameter, diameter);

        // Нарисуем звезду.
        e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
        DrawStar(e.Graphics, Pens.Red, Brushes.Yellow,
            (int)nudPoints.Value, (int)nudSkip.Value,
            rect);

        e.HasMorePages = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Этот код анализирует введенный вами диаметр. Затем он преобразует расстояние от миллиметров до 100 дюймов на дюйм, которое используется в документе печати.

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

Затем код вызывает метод DrawStar, чтобы нарисовать звезду в этом RectangleF. См. более ранний пример для описания этого метода.

Код заканчивается установкой e.HasMorePages = false, чтобы указать, что это последняя страница распечатки.

Когда появится диалоговое окно, вы можете просмотреть звезду. Затем вы можете нажать кнопку печати в левом верхнем углу, чтобы отправить звезду на принтер.

Источник: http://csharphelper.com/blog/2015/01/print-stars-c/

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