Печать темы для C #

Ежедневно вода в начале, заглянул под последний блог, и восемь дней в году, ТПИ, роскошь.

В последнее время работа вполне устраивает, я хочу направление, последующее обучение машины делать, должны накапливаться перед первой компанией, чтобы решить проблему сейчас.

Разговор о жизни закончился, или, что главная тема. (Я считаю, что это название не может привлечь людей, ах)

 

 

Print: PrintDocument

Окружающая среда: WPF и Winform

Требования: наборные и печать фотографии

Перед параметры не понять много проблем, а теперь хотят, чтобы очистить, легко записать его.

WPF временно отложить в сторону, чтобы быть решен до WinForm, с Baidu плохой улице одного и того же события PrintPage Графика рисунок для печати. Другая часть ссылки

https://www.cnblogs.com/hsiang/p/6921817.html

Во-первых с графикой рисовать я не понимаю, как рисовать, сколько размер бумаги, как печатать заданный размер.

// Давайте поговорим о размере бумаги, то размер бумаги может быть напечатан в начале файла
  PrintDocument.Print (); 
И после выбранного принтера, используя данные, которые будут печататься в случае, когда PrintPage
частная  пустота pdControl_PrintPage ( объект отправителя, PrintPageEventArgs е) 
{ 
    вар PrintDocument = (PrintDocument) отправителя;
    //纸张的高和宽
    вар paper_h = printDocument.DefaultPageSettings.PaperSize.Height;
    вар paper_w = printDocument.DefaultPageSettings.PaperSize.Width;
}

Но знаю, но не знаю, высоту и ширину блока, ах, эта высота и ширина в пикселях или дюймах, в конце концов, или другой какой ад.

В примере нового PaperSize увидеть Примечание:

Сотых дюйма

 Первая такая проблема решена, размер бумаги printDocument.DefaultPageSettings.PaperSize, а единицы сотых дюйма.

Но не слишком уверен в этом, к примеру, я хочу, чтобы напечатать изображение на 6 дюймов (в частности, количество), но, учитывая ширину размера и больше 0.15In, намного выше 0.13In. В любом случае победа приходит с бумагой формата А4 PDF печати будет отличаться от 0,002 или менее в порядке. Почему это должно быть богом, чтобы объяснить ошибку.

 

Тогда второй вопрос (третий): как рисовать, чтобы напечатать указанный размер

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

Что я делаю, это зависит от размера картины охватывает всю бумагу. 

   // Давайте создадим класс, и записать размер изображения к размеру бумаги
// Этот класс только для облегчения отладки преобразования единиц измерения, практическое применение только выбрать единицу линейного класса PrintUnit {
     // размер изображения, где изображение на самом деле дюйм фотографии
общественного ИНТ unit_w = 259 ; общественное ИНТ unit_h = 377 ;
     // размер бумаги 4 * 300 * 6 300dpi 300..
общественности PaperSize = в PaperSize новый новый PaperSize ( " A6 " , 1800 , 1200 );
     // метрика
частного GraphicsUnit единицы = GraphicsUnit .pixel; общественный GraphicsUnit Unit { GET => Единица; SET { Единица = значение;
          // если метрических миллиметров
ПЧ (Единица измерения == GraphicsUnit.Millimeter) {
            // в частности , с точки зрения 1200 / 25.4 приблизительно равна 300 * 102
  paperSize.Height
= 102 ; paperSize.Width = 152 ;
unit_w
= 22 ; unit_h = 32 ; } } } }

 

Тогда PrintPage событие, где бумага может быть рассчитана как много увешаны картинами

            PrintUnit printUnit = новый PrintUnit (); 
       g.PageUnit = printUnit.Unit;
       колонка = printUnit.paperSize.Width / printUnit.unit_w; строка = printUnit.paperSize.Height / printUnit.unit_h; для ( INT I = 0 ; я <строка; я ++ ) { для ( INT J = 0 ; J <столбец; j ++ ) { // g.DrawImage ( // Resources._1, // новый прямоугольник (J * printUnit.unit_w, я * printUnit.unit_h, printUnit.unit_w, printUnit.unit_h) // Новый прямоугольник (0, 0, Resources._1.Width, Resources._1.Height), // г. PageUnit); g.DrawImage (Resources._1, J * printUnit.unit_w, я * printUnit.unit_h, printUnit.unit_w, printUnit.unit_h); } }

  Интересно, что в DrawImage (Изображение, прямоугольник destRect, Rectangle srcRect, GraphicsUnit srcUnit), перегруженных в картинке есть ошибка, по неизвестным причинам.

 Немного хаотично, я вынужден объяснить волну.

В том случае, когда PrintPageEventArgs.PageUnit печать создана единица измерения является единицей вы хотите нарисовать пиксель или миллиметр или в соответствии с другим по умолчанию является сотыми дюйма.

// Например, вы хотите печатать на бумаге формата А4 210мм × 297 мм, печать события PrintPage в установленных единицах измерения в миллиметровом 
g.PageUnit = GraphicsUnit.Millimeter;
// покрыли всю бумагу A4
g.DrawImage (изображение, 0, 0, 210, 297) ;

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

Очевидно, что будет разрыв при построении графика в миллиметрах

 

 Лень наборное, нечто большее, листок скольжения.

 

 

 

 В передней части высокой энергии напоминают код беспорядок, вы радушны.

 https://files.cnblogs.com/files/zlyxm/DemoPrint_zlyxm.rar

  

 

 

рекомендация

отwww.cnblogs.com/zlyxm/p/10937940.html