Utskrift

.NET

1 svar · 296 visningar · startad av Viktor

Medlem sedan aug. 20021 752 inlägg
Trådstart#1

Jag vill skriva ut en rektangel som är 724 hundradelar av en inch bred och 1047 hög, ett A4 har storleken 827x1169 så för att få min rektangel i mitten använder jag marginaler men det blir helt fel ändå, den får fel storlek och marginalerna ser helt fel ut.
Jag använder följande kod,

private PrintDocument printDoc = new PrintDocument();

public Form1()
{
	printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
}
private void button1_Click(object sender, System.EventArgs e)
{
	PrintDialog dlg = new PrintDialog();
	dlg.Document = printDoc;
	if (dlg.ShowDialog() == DialogResult.OK) 
	{
		printDoc.Print();
	}
}

private void printDoc_PrintPage(Object sender , PrintPageEventArgs e)
{
	e.PageSettings.Margins=new Margins(51,52,61,61);
	Rectangle rect=new Rectangle(e.PageSettings.Margins.Left,e.PageSettings.Margins.Top,e.MarginBounds.Width,e.MarginBounds.Height);
	e.Graphics.DrawRectangle(new Pen(Brushes.Black),rect);
}

och jag bifogar en PDF som visar resultatet.

/Viktor

Medlem sedan feb. 20001 590 inlägg
#2

Det var ett tag sedan jag grejade med utskrifter, men en saksom jag kommer ihåg är att man måste ta reda på den utskrivningsbara delen av sidan. En skrivare kan aldrig skriva hela sidans bredd, så du måste plocka ut värdet för totala utskriftsbredden, och sedan ta bort marginalvärdet.

Detta gäller både sidomarginal och toppmarginal. De flesta skrivarna har större oskrivbar yta på papprets överkant.

Det finns en funktion för att få fram skrivbar höjd och bredd, kommer dock inte ihåg detta i huvudet...

246 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)