+ -
当前位置:首页 → 问答吧 → VB打印中遇到的一个问题

VB打印中遇到的一个问题

时间:2011-11-11

来源:互联网

在VB中,如果将文字图片画到picturebox上,那么可以很轻易的打印出任意图文混合效果,但是文字效果却总是比较模糊.主要原因应该是分辨率上的关系。但确不知如何解决。

如果直接用printer打印,在打印黑框内嵌入白色的情况时又不知如何处理.真是比较郁闷.
所以希望熟打印的朋友,如何才能清晰的在单色机上打印出黑底框白色字?

应该是两种解决办法
1.如何用picturebox画出来的图分辨率比较高能将文字打印清晰?
2.如何用printer.print+printer.line画出黑框,并将白字色加入黑框中?

例如这种效果
http://www.sh1122.com/200803/20080320163011.JPG

作者: MOODSKY2002   发布时间: 2011-11-11

引用楼主 moodsky2002 的回复:
在VB中,如果将文字图片画到picturebox上,那么可以很轻易的打印出任意图文混合效果,但是文字效果却总是比较模糊.主要原因应该是分辨率上的关系。但确不知如何解决。

如果直接用printer打印,在打印黑框内嵌入白色的情况时又不知如何处理.真是比较郁闷.
所以希望熟打印的朋友,如何才能清晰的在单色机上打印出黑底框白色字?

应该是两种解决办法
1.如何用picturebox画出来……


在printer上绘图和在Form上绘图使用相同的逻辑
黑色方框上打印白字,你可以将printer的BackColor设置为黑色,ForeColor设置为白色,然后打印

作者: worldy   发布时间: 2011-11-11

VB code
Option Explicit
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source

Private Sub Command1_Click() '打印图片
     Picture1.Width = Picture1.Width
    Picture1.Height = Picture1.Height
    Picture1.AutoRedraw = True
    BitBlt Picture1.hDC, 0, 0, Picture1.Width / Screen.TwipsPerPixelX, Picture1.Height / Screen.TwipsPerPixelY, Picture1.hDC, 0, 0, SRCCOPY
    Picture1.AutoRedraw = False
    Picture1.Refresh
    Printer.PaintPicture Picture1.Image, 1000, 1000
    Printer.EndDoc
End Sub
Private Sub Form_Load()
    Picture1.AutoRedraw = True
    Picture1.Line (1, 1)-(4500, 1500), RGB(0, 0, 0), BF
    Picture1.CurrentX = 200
    Picture1.CurrentY = 200
    Picture1.FontBold = True
    Picture1.FontName = "宋体"
    Picture1.FontSize = 48
    Picture1.ForeColor = RGB(255, 255, 255)
    Picture1.FontTransparent = True
    Picture1.Print "黑底白字"
End Sub

作者: zdingyun   发布时间: 2011-11-11

http://topic.csdn.net/u/20080920/01/779CFED5-CF81-4D15-85E9-03BB6AD5829E.html#r_52403909

作者: zdingyun   发布时间: 2011-11-11

简化代码:
VB code
Private Sub Command1_Click() '打印图片
    Picture1.AutoRedraw = False
    Picture1.Refresh
    Printer.PaintPicture Picture1.Image, 1000, 1000
    Printer.EndDoc
End Sub

Private Sub Form_Load()
    Picture1.AutoRedraw = True
    Picture1.Line (1, 1)-(4500, 1500), RGB(0, 0, 0), BF
    Picture1.CurrentX = 200
    Picture1.CurrentY = 200
    Picture1.FontBold = True
    Picture1.FontName = "宋体"
    Picture1.FontSize = 48
    Picture1.ForeColor = RGB(255, 255, 255)
    Picture1.FontTransparent = True
    Picture1.Print "黑底白字"
End Sub

作者: zdingyun   发布时间: 2011-11-11