Печатать звезды в 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, чтобы указать, что это последняя страница распечатки.
Когда появится диалоговое окно, вы можете просмотреть звезду. Затем вы можете нажать кнопку печати в левом верхнем углу, чтобы отправить звезду на принтер.
