2015-12-06 5 views
0

Я пытаюсь распечатать панель (с ее содержимым) на принтер. Я видел разные сообщения в сети, но я не могу распечатать панель и получить правильный размер. Панель печатается очень крупно и не так, как ожидалось.Печать панели на принтер

Например, я хочу, чтобы напечатать панель и получить в качестве выходного формата 80мм X 40мм:

private void Print_Click(object sender, EventArgs e) 
    { 
     int pixelsWidth = 300; // 300 pixels= ~8cm 
     int pixelsHeight = 150; // 150 pixels= ~4cm    
     panelLabel.Size = new Size(pixelsWidth,pixelsHeight); 

     PrintPanel(); 
    } 

    private void PrintPanel() 
    { 
     System.Drawing.Printing.PrintDocument doc = new PrintDocument(); 
     doc.PrintPage += new PrintPageEventHandler(doc_PrintPage); 
     doc.Print(); 
    } 

    private void doc_PrintPage(object sender, PrintPageEventArgs e) 
    {    
     Bitmap bmp = new Bitmap(panelLabel.Width, panelLabel.Height); 
     panelLabel.DrawToBitmap(bmp, new Rectangle(0, 0, panelLabel.Width, panelLabel.Height)); 
     RectangleF bounds = e.PageSettings.PrintableArea; 

     e.Graphics.PageUnit = GraphicsUnit.Millimeter; 
     e.Graphics.DrawImage(bmp, bounds.Left, bounds.Top, bounds.Width, bounds.Height); 
    } 

ответ

0

Вы наставили вещи почти сразу.

Единственное, что отсутствует, это установить разрешение для растрового изображения.

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

Предполагая, что квадратичные пикселей попробовать это:

int pixelsWidth = 300; // 300 pixels= ~8cm 
int pixelsHeight = 150; // 150 pixels= ~4cm 
Bitmap bmp = new Bitmap(pixelsWidth, pixelsHeight); 
//..  

float targetWidthInInches = 80f/25.4f; 
float dpi = 1f * pixelsWidth/targetWidthInInches; 

bmp.SetResolution(dpi, dpi); 
+0

Спасибо, Что 800F и 254f ценности? – ehh

+0

8 см = 80 мм. 25,4 мм = 1 дюйм. Обратите внимание на исправление ;-) – TaW