打印功能在不同的类
本文关键字:功能 打印 | 更新日期: 2023-09-27 18:03:05
我需要一个小帮助。我想做一个简单的类,必须只提供数据和文档打印。我想把所有设置和图形放到一个类中,然后调用print函数。我的printdocument类看起来像这样:
class printticket
{
PrintDocument ticket;
public void printticket()
{
ticket = new PrintDocument();
}
public void writeHeader(string h)
{
Graphics g = printargs.Graphics;
StringFormat fs = new StringFormat();
fs.Alignment = StringAlignment.Center;
Rectangle r = new Rectangle(X, Y, pargs.MarginBounds.Width, (int)g.MeasureString(h, defaultFont).Height);
g.DrawString(h, defaultFont, Brushes.Black, r, fs);
Y += r.Height;
}
void print()
{
ticket.print();
}
}
现在我想这样调用这个函数:
var printticket = new printticket();
printticket.writeHeader("this is a testing string");
printticket.print();
有可能这样做吗?
我能想到的最好的方法是传递你想要在PrintTicket
类的构造函数中打印出来的所需字符串,这将在稍后的writeHeader
方法中使用。writeHeader
方法绑定到PrintPage事件,所以它可以访问PrintPageEventArgs。
所以你的PrintTicket
类看起来像:
public class PrintTicket {
private PrintDocument _ticket;
private string _header;
private Font _defaultFont;
private int X;
private int Y;
public PrintTicket(string header) {
_ticket = new PrintDocument();
_ticket.PrintPage += new PrintPageEventHandler(this.writeHeader);
_header = header;
}
private void writeHeader(object sender, PrintPageEventArgs e) {
Graphics g = e.Graphics;
StringFormat fs = new StringFormat();
fs.Alignment = StringAlignment.Center;
Rectangle r = new Rectangle(X, Y, e.MarginBounds.Width, (int)g.MeasureString(_header, _defaultFont).Height);
g.DrawString(_header, _defaultFont, Brushes.Black, r, fs);
Y += r.Height;
}
public void Print() {
_ticket.Print();
}
}
你可以这样称呼它:
PrintTicket t = new PrintTicket("This is what I want to print out");
t.Print();