如何在C# WinForms中打印指定宽高的图片作为页面页眉?
解决打印时固定图片宽高作为页眉的问题
嘿,我明白你的需求了——想要把上传的图片作为固定尺寸的页眉打印,但目前的代码没法控制图片的宽高,导致它铺满了整个页面对吧?这是因为你调用的DrawImage重载用了e.PageBounds,它会让图片适配整个页面边界。咱们来修改一下代码,轻松实现固定宽高的页眉效果:
核心修改点
你需要使用Graphics.DrawImage的重载版本,通过指定一个Rectangle来定义图片的位置和固定宽高,而不是直接用页面边界。另外还有个小优化:不要每次打印都从文件重新加载图片,直接用pictureBox1里已经加载好的图片,既高效又能避免文件被占用的问题。
修改后的打印代码
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { // 先判断是否有上传的图片,避免空引用报错 if (pictureBox1.Image != null) { // 定义页眉图片的位置和固定宽高:X=20, Y=10(页眉的左上角位置),宽=150,高=50 int headerImgWidth = 150; int headerImgHeight = 50; Rectangle headerRect = new Rectangle(20, 10, headerImgWidth, headerImgHeight); // 绘制固定尺寸的图片作为页眉 e.Graphics.DrawImage(pictureBox1.Image, headerRect); } // 继续绘制你的文本内容,位置可以根据页眉调整 e.Graphics.DrawString(labelProjectNum.Text, new Font("Times New Roman", 12, FontStyle.Underline), Brushes.Black, new Point(700, 200)); e.Graphics.DrawString(projectNumber.Text, new Font("Times New Roman", 12, FontStyle.Regular), Brushes.Black, new Point(650, 200)); }
额外说明
- 你可以根据需要调整
headerImgWidth、headerImgHeight和Rectangle的X、Y值,来精确控制页眉图片的位置和大小。 - 如果你担心图片拉伸变形,可以使用
DrawImage的另一个重载来保持原始比例:
这个版本会按照图片的原始比例绘制,不会因为目标矩形的宽高比例不同而拉伸变形。e.Graphics.DrawImage(pictureBox1.Image, headerRect, 0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height, GraphicsUnit.Pixel);
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

