You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 08:44:10