Распечатайте диаграмму конверсии по Цельсию в Фаренгейт в C#
Один из моих друзей повара много использует японские кулинарные книги. Поскольку печи в Соединенных Штатах показывают только температуру в градусах Фаренгейта (кто-то должен сделать это в духовке), ей необходимо преобразовать температуры от Цельсия до Фаренгейта. В этом примере распечатывается список конверсий от Цельсия до Фаренгейта и наоборот, что она может печатать и размещать на своем холодильнике.
Во время разработки я добавил форму PrintDocument и PrintPreviewDialog. Затем я устанавливаю свойство PrintDocument диалогового окна в документ.
При нажатии кнопки «Печать диаграммы» выполняется следующий код.
1 2 3 4 |
private void btnCreateChart_Click(object sender, EventArgs e) { ppdChart.ShowDialog(); } |
Этот код вызывает диалоговое окно ShowDialog. После этого диалог PrintDocument генерирует графику, которую он должен отображать в своем предварительном просмотре.
PrintDocument затем создает событие PrintPage, чтобы ваш код генерировал графику, которая должна быть напечатана. Следующий код показывает, как этот пример рисует диаграмму Цельсия до Фаренгейта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
private void pdocChart_PrintPage(object sender, PrintPageEventArgs e) { const float font_size = 12; const float dy = font_size * 1.5f; float x0 = e.MarginBounds.Left + 0.5f * 100; float x1 = x0 + 0.75f * 100; float y = e.MarginBounds.Top; e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; using (Font font = new Font("Times New Roman", font_size)) { using (StringFormat sf = new StringFormat()) { sf.Alignment = StringAlignment.Center; e.Graphics.DrawString("Celsius", font, Brushes.Blue, x0, y, sf); e.Graphics.DrawString("Fahrenheit", font, Brushes.Blue, x1, y, sf); y += dy; for (int celsius = 60; celsius <= 250; celsius += 5) { float fahrenheit = celsius * 9f / 5f + 32; e.Graphics.DrawString(celsius.ToString(), font, Brushes.Black, x0, y, sf); e.Graphics.DrawString(fahrenheit.ToString("0"), font, Brushes.Black, x1, y, sf); y += dy; } y = e.MarginBounds.Top; float x2 = x1 + 1.2f * 100; float x3 = x2 + 0.75f * 100; e.Graphics.DrawString("Fahrenheit", font, Brushes.Blue, x2, y, sf); e.Graphics.DrawString("Celsius", font, Brushes.Blue, x3, y, sf); y += dy; for (int fahrenheit = 140; fahrenheit <= 500; fahrenheit += 10) { float celsius = (fahrenheit - 32) * 5f / 9f; e.Graphics.DrawString(fahrenheit.ToString(), font, Brushes.Black, x2, y, sf); e.Graphics.DrawString(celsius.ToString("0"), font, Brushes.Black, x3, y, sf); y += dy; } } } } |
Этот обработчик событий устанавливает некоторые значения, устанавливает свойство TextRenderingHint объекта Graphics объекта объекта, а затем создает шрифт. Он также создает объект StringFormat для выравнивания текста по горизонтали.
Код рисует заголовки Celsius и Fahrenheit, центрированные по координатам X x0 и x1, а затем перемещает значение y до следующего линия.
Далее код проходит через значения Celsius в диапазоне от 60 до 250. Для каждого значения код покрывает значение по Цельсию в значение по Фаренгейту и рисует значения на странице, перемещая значение y tt > вниз для следующей строки.
После того, как он отобразил конверсии Celsius to Fahrenheit, программа сбрасывает координату Y в верхней части страницы, а повторяет те же шаги, на этот раз отображая конверсии по Фаренгейту по Цельсию.
Вот и все. Когда вы запускаете программу и нажимаете кнопку, программа отображает предварительный просмотр конверсий. Вы можете нажать кнопку «Печать» диалогового окна предварительного просмотра, чтобы отправить результат на принтер.