webForumDet fria alternativet

Utskrift

.NET

1 svar · 284 visningar · startad av Viktor

Medlem sedan aug. 20021 752 inlägg
Frågan#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...

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)