Formular als Bitmap speichern, aber in hoher Auflösung

14/10/2010 - 14:22 von Habak | Report spam
Hallo allerseits,

ich habe folgende Problemstellung:

Eine c#-Anwendung erzeugt ein Formular auf dem Bildschirm, dass nach erfolgreichem Ausf?llen und Berechnen zum einen gespeichert und zum anderen gedruckt werden soll.
Das gelingt mir zwar, aber nur mit einer Aufl?sung von 96 Dpi.
Wie kann man eine h?here Aufl?sung erreichen?
Habe schon stundenlang erfolglos gegoogelt.
Vielen Dank im voraus.

Anbei der bislang verwendete Code:

private void printDocument1_PrintPage_1(object sender, PrintPageEventArgs e)
{
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
Bitmap b = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(b, e.PageBounds);
b.Save("C:\\Users\\xxxx\\Desktop\\test.png", System.Drawing.Imaging.ImageFormat.Png);
e.Graphics.DrawImage(b, new Point(10, 10));
}

private void druckenToolStripMenuItem_Click(object sender, EventArgs e)
{
printDocument1.Print();
}

Submitted via EggHeadCafe - Software Developer Portal of Choice
SharePoint Lists In Excel Via VSTO
http://www.eggheadcafe.com/tutorial...-vsto.aspx
 

Lesen sie die antworten

#1 Thomas Scheidegger
14/10/2010 - 17:35 | Warnen spam
?Hallo "Habak"

this.DrawToBitmap(b, e.PageBounds);



hier wird wohl Win32 'WM_PRINT' verwendet, womit eigentlich nur ein simpler
Screenshot entsteht.
Somit hat dieser die Auflösung vom Bildschirm (typisch zB 96dpi), wogegen
Drucker eher bei zB 600dpi liegen,
folglich werden da die Pixels bloss 'aufgeblasen'.

Also müsste dein Formular selber (inkl. aller Controls darauf) erst mal auf
höhere dpi-Auflösung hochgeschraubt werden,
erst dann würde 'DrawToBitmap' entsprechend auch besser.
Dies dürfte etwas aufwàndiger werden, da vieles bei .NET
Windows-Forms/Controls Bildschirm-bezogen ist.
(im Gegensatz etwa zu WPF/XAML, was besser skaliert)



Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen