Распечатайте диаграмму конверсии по Цельсию в Фаренгейт в C#
Один из моих друзей повара много использует японские кулинарные книги. Поскольку печи в Соединенных Штатах показывают только температуру в градусах Фаренгейта (кто-то должен сделать это в духовке), ей необходимо преобразовать температуры от Цельсия до Фаренгейта. В этом примере распечатывается список конверсий от Цельсия до Фаренгейта и наоборот, что она может печатать и размещать на своем холодильнике.
Во время разработки я добавил форму PrintDocument и PrintPreviewDialog. Затем я устанавливаю свойство PrintDocument диалогового окна в документ.
При нажатии кнопки «Печать диаграммы» выполняется следующий код.
private void btnCreateChart_Click(object sender, EventArgs e) { ppdChart.ShowDialog(); }
Этот код вызывает диалоговое окно ShowDialog. После этого диалог PrintDocument генерирует графику, которую он должен отображать в своем предварительном просмотре.
PrintDocument затем создает событие PrintPage, чтобы ваш код генерировал графику, которая должна быть напечатана. Следующий код показывает, как этот пример рисует диаграмму Цельсия до Фаренгейта.
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 в верхней части страницы, а повторяет те же шаги, на этот раз отображая конверсии по Фаренгейту по Цельсию.
Вот и все. Когда вы запускаете программу и нажимаете кнопку, программа отображает предварительный просмотр конверсий. Вы можете нажать кнопку «Печать» диалогового окна предварительного просмотра, чтобы отправить результат на принтер.