C#单独更改Y位置

时间:2014-12-10 17:01:42

标签: c# printing printdocument

我正在尝试创建一种收据。发生的事情是我的打印机没有驱动程序(我的操作系统也没有)。所以我安装了通用打印机文本。我的打印机是POS打印机之一。

这是我的配置:

int _x = 10;
int _y = 5;
int _width = 270; // max width I found through trial and error
int _height = 0;

StringFormat _center = new StringFormat();
StringFormat _left = new StringFormat();
StringFormat _right = new StringFormat();

_center.Alignment = StringAlignment.Center;
_left.Alignment = StringAlignment.Near;
_right.Alignment = StringAlignment.Far;

PrintDocument _print = new PrintDocument();
PrintPreviewDialog _printPrev = new PrintPreviewDialog();

_print.DefaultPageSettings.PaperSize = new PaperSize("My Custom Receipt", _width, 600);
_print.DefaultPageSettings.PaperSize.RawKind = (int)PaperKind.Custom;
_print.DefaultPageSettings.Landscape = false;
_print.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);

_print.OriginAtMargins = true;

_printPrev.Document = _print;
_printPrev.PrintPreviewControl.AutoZoom = false;
_printPrev.PrintPreviewControl.Zoom = 1;

要写入我使用的论文:

_print.PrintPage += (Object sender, PrintPageEventArgs e) => {

    // Header information
    e.Graphics.DrawString("Number:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left);
    e.Graphics.DrawString(number.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center);
    _y += (int)e.Graphics.MeasureString(number.ToString(), medium).Height;

    e.Graphics.DrawString("BARCODE:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left);
    e.Graphics.DrawString(barcode.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center);
    _y += (int)e.Graphics.MeasureString(barcode.ToString(), medium).Height;

    // And so on..
}

如果我只写两行(例如),那么所有这些行都会保持+/-粘在标题中,否则,它们会开始被推入底部。以下图片说明了问题:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

解决。

我所要做的就是将以下变量复制到_print.PrintPage()内。

int _x = 10;
int _y = 5;
int _width = 270; // max width I found through trial and error
int _height = 0;