【问题标题】:Printing Image, Text and Margins?打印图像、文本和边距?
【发布时间】:2014-04-10 06:09:14
【问题描述】:

我花了几天时间尝试寻找可以结合三者的Vb.net脚本(打印图像+打印文本+更改边距);但没有运气;

我想:

  • PictureBox1中打印图片;
  • RichTextBox1 打印文本(图片下方或上方);
  • 调整页面边距

另外,如果我能在打印前获得上述打印预览的帮助,我将不胜感激;

下面是我的启动脚本,它只会操作文本:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    printDocument1.Print()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    printPreviewDialog1.Document = printDocument1
    printPreviewDialog1.ShowDialog()
End Sub

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printDocument1.PrintPage
    Dim fnt_t As Font
    fnt_t = RichTextBox1.Font
    e.Graphics.DrawString(RichTextBox1.Text, fnt_t, New SolidBrush(Color.Black), 10, 10)
End Sub

结束类

【问题讨论】:

  • 我从下面的代码开始;用于打印和打印预览文本;然后我开始搞砸添加图像和控制边距,但它不起作用;
  • 我从下面的代码开始;用于打印和打印预览文本;然后我开始搞砸添加图像和控制边距,但它没有用;哦;我只是遇到了无法粘贴代码的问题;它说的字符数超出了允许的范围??
  • 好的;我想出了另一种发布代码的方法;我不确定这是否是唯一的方法;但我最终将其发布在上面的原始问题中......
  • 使用 e.Graphics.Drawimage 将图像放入您的 printdoc ..
  • 喜垫子;您能根据我的要求发布示例代码吗?

标签: vb.net printing


【解决方案1】:

此答案基于您对想要在图像上绘制文本的评论。

当您将项目绘制到 PrintDocument 时,首先绘制的项目将位于稍后绘制的任何项目的下方,如果它们在图形表面上占据相同的位置。这是一个关于如何在图像中居中文本的示例。

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage     
    Dim fnt_t As Font = RichTextBox1.Font 'Set your font
    Dim rect As Rectangle = New Rectangle(New Point(0, 0), PictureBox1.Image.Size) ' used to give a common reference
    Dim fmt As StringFormat = New StringFormat()
    fmt.Alignment = StringAlignment.Center 'Horizontal Centering
    fmt.LineAlignment = StringAlignment.Center 'Vertical Centering
    e.Graphics.DrawImage(PictureBox1.Image, rect) 'Draw Image
    e.Graphics.DrawString(RichTextBox1.Text, fnt_t, New SolidBrush(Color.White), rect, fmt) 'Draw Text
End Sub

而这个例子就是如何在图片底部添加文字。

Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim fnt_t As Font = RichTextBox1.Font 'Set your font
    Dim rect As Rectangle = New Rectangle(New Point(0, 0), PictureBox1.Image.Size) ' get the size of the image
    Dim lineheight As Integer = TextRenderer.MeasureText(RichTextBox1.Text, fnt_t).Height ' Measure to find height of text
    Dim stringRect As Rectangle = New Rectangle(0, rect.Bottom - lineheight, rect.Width, lineheight) 'Determine rectangle for Text 
    Dim fmt As StringFormat = New StringFormat() 'Tell it to center Text in its rectangle 
    fmt.Alignment = StringAlignment.Center 'Center it 
    e.Graphics.DrawImage(PictureBox1.Image, rect) 'Draw Image
    e.Graphics.DrawString(RichTextBox1.Text, fnt_t, New SolidBrush(Color.White), stringRect, fmt) 'Draw Text
End Sub

【讨论】:

  • 太棒了;完美运行;我在所有搜索引擎中都找不到这个;谢谢马克。
猜你喜欢
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 2018-01-08
  • 2015-10-30
  • 2017-03-31
相关资源
最近更新 更多