我正在使用C#Windows窗体开发销售点应用程序。现在我正处于一个我必须为客户打印Receipt的舞台上。为此我正在使用热敏打印机。我在附有面板图像上绘制收据。首先,我尝试使用位图打印它,但是当我在热敏打印机上打印时,它会变得淡淡。该代码如下:
Bitmap bp = new Bitmap(Panel1.Width, Panel1.Height);
Panel1.DrawToBitmap(bp, new Rectangle(0, 0, Panel1.Width, Panel1.Height));
e.Graphics.DrawImage(bp, 0, 0);
PageSetupDialog psd = new PageSetupDialog();
psd.Document = printDocument1;
答案 0 :(得分:0)
有两种方法可以做到这一点,一种是复杂的,也就是非一般的,例如一次硬编码就很难改变而不再建立项目
第一种方式
通过这种方式,您必须覆盖onDraw()函数进行打印,这样您就必须计算每个字符串的位置和大小,这些字符串在收到时要打印,非常复杂且非常棘手,每次更改都需要更改所有字符串。再次计算
第二种方式
您必须使用HTML创建收据,CSS非常简单高效以及通用版,以后您只需更改HTML模板,您的应用程序将采用您的新收据,而无需再次构建应用程序 所以你需要做的是
创建Html代码,使值字段保留一些可替换的字符组合,即
<h3>Total Bill : %bill%</h3>
在您的程序中,您将读取该文件并将%bill%替换为实际值
完成此过程后,您将最终获得HTML收据代码 然后像这样创建一个WebBrowser实例
WebBrowser browser = new WebBrowser();
browser.DocumentCompleted +=new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
browser.DocumentText = "your generated html code";
之后创建一个像这样的WebBrowser_DocumentCompleted事件
public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
//set here your thermal printer by default if it is not already
wb.Print();
}
你完成了!