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