Ich habe ein Problem beim drucken einer Textdatei. Zum einen weiß ich nicht, wie ich darauf reagieren soll, wenn die Zeile länger ist, als die Seite breit ist und zum anderen weiß ich nicht, wie ich dem Drucker sagen kann, das er nicht bei Position 0,0 anfangen soll zu drucken (weil das kann er ja eh nicht)
Kann mir jemand sagen was ich ändern, bzw. einfügen muss?
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
if(myFont==null)
myFont = new Font("Arial",20);
if(myBrush==null)
myBrush = Brushes.Black;
String[] splitted = null;
splitted = document.Split('\n');
linesPerPage = (int)((double)e.MarginBounds.Height / myFont.GetHeight());
totalPages = splitted.Length / linesPerPage;
if((splitted.Length % linesPerPage) != 0)
{
totalPages++;
}
for(int i=0;i<linesPerPage;i++)
{
if(i+(linesPerPage*currentPage)>=splitted.Length)
{
break;
}
e.Graphics.DrawString(splitted[i+(linesPerPage*currentPage)], myFont, myBrush,x,y+(i*myFont.GetHeight()));
}
if(currentPage+1<totalPages) // +1 weil sonst 1 Seite zu viel gezählt wird.
{
e.HasMorePages = true;
currentPage++;
}
else
{
e.HasMorePages = false;
}
}
Kann mir jemand sagen was ich ändern, bzw. einfügen muss?
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
if(myFont==null)
myFont = new Font("Arial",20);
if(myBrush==null)
myBrush = Brushes.Black;
String[] splitted = null;
splitted = document.Split('\n');
linesPerPage = (int)((double)e.MarginBounds.Height / myFont.GetHeight());
totalPages = splitted.Length / linesPerPage;
if((splitted.Length % linesPerPage) != 0)
{
totalPages++;
}
for(int i=0;i<linesPerPage;i++)
{
if(i+(linesPerPage*currentPage)>=splitted.Length)
{
break;
}
e.Graphics.DrawString(splitted[i+(linesPerPage*currentPage)], myFont, myBrush,x,y+(i*myFont.GetHeight()));
}
if(currentPage+1<totalPages) // +1 weil sonst 1 Seite zu viel gezählt wird.
{
e.HasMorePages = true;
currentPage++;
}
else
{
e.HasMorePages = false;
}
}
Comment