双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

新建一个bmp,随便打一个字符串,打印出来分辨率不清问题。

lilunlil lilunlil 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
研究了一天C#打印的问题,发现这里面有三个尺寸误点:
以我自定义纸张75cm*50cm为例(实际上就是一个小标签)
①纸张设置时的尺寸
// width:
// 纸张宽度,以百分之一英寸为单位。
//
// height:
// 纸张高度,以百分之一英寸为单位。
那我实际设的尺寸就应该为
(int)(75 * 100 / 25.4 ), (int)(50 * 100 / 25.4 )
②新建Bitmap的尺寸
// 参数:
// width:
// 新 System.Drawing.Bitmap 的宽度(以像素为单位)。
那我实际设的尺寸就应该为
(int)(75 * dpi / 25.4 ), (int)(50 *dpi / 25.4 )
注: dpi可以自行设定

③最后划定区域的大小
e.Graphics.DrawImage((Image)Bmp, destRect, srcRect, System.Drawing.GraphicsUnit.Pixel);
destRect的尺寸我还没搞明白,我估计打印分辨率差与这个就有关系。

        private void button4_Click(object sender, EventArgs e)
{
//纸张设置默认
PaperSize pageSize = new PaperSize("Custom Title size", (int)(75 * 100 / 25.4 + 1), (int)(50 * 100 / 25.4 + 1));//①纸张大小设定:以百分之一英寸为单位。
pd.DefaultPageSettings.PaperSize = pageSize;

//打印事件设置
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage3);
pd.Print();
}

private void pd_PrintPage3(object sender, PrintPageEventArgs e)
{
Bitmap Bmp = new Bitmap(590, 394);//②毫米换成像素:75*200/25.4=590,50*200/25.4=394
Bmp.SetResolution(200, 200);
Graphics g = Graphics.FromImage(Bmp);

Font Ft = new Font("宋体", 12, FontStyle.Regular);
Brush Bs = new SolidBrush(Color.Black);
g.DrawString("字符串测试", Ft, Bs, 29, 197);
Pen Pn = new Pen(Bs);
g.DrawLine(Pn, 2, 2, 588, 2);
g.DrawLine(Pn, 2, 2, 2, 392);
g.DrawLine(Pn, 2, 392, 588, 392);
g.DrawLine(Pn, 588, 2, 588, 392);

//e.Graphics.DrawImage(Bmp,0,0);

Rectangle destRect = new Rectangle(6, 6, Convert.ToInt32(75 * 96 / 25.4), Convert.ToInt32(50 * 96 / 25.4));//③屏幕分辨率:96
Rectangle srcRect = new Rectangle(0, 0, Bmp.Width, Bmp.Height);

e.Graphics.DrawImage((Image)Bmp, destRect, srcRect, System.Drawing.GraphicsUnit.Pixel);//我怀疑问题与这条语句有关
}
...全文
评论 5
收藏 已收藏
分享
返回顶部
lilunlil
C# 111,129 成员 642,540 内容