在VB中,如果将文字图片画到picturebox上,那么可以很轻易的打印出任意图文混合效果,但是文字效果却总是比较模糊.主要原因应该是分辨率上的关系。但确不知如何解决。如果直接用printer打印,在打印黑框内嵌入白色的情况时又不知如何处理.真是比较郁闷.
所以希望熟打印的朋友,如何才能清晰的在单色机上打印出黑底框白色字?应该是两种解决办法
1.如何用picturebox画出来的图分辨率比较高能将文字打印清晰?
2.如何用printer.print+printer.line画出黑框,并将白字色加入黑框中?例如这种效果
http://www.sh1122.com/200803/20080320163011.JPG

解决方案 »

  1.   


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

  2.   

    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 = sourcePrivate 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
      

  3.   

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

  4.   

    简化代码:
    Private Sub Command1_Click() '打印图片
        Picture1.AutoRedraw = False
        Picture1.Refresh
        Printer.PaintPicture Picture1.Image, 1000, 1000
        Printer.EndDoc
    End SubPrivate 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
      

  5.   

    回复worldy,vb6中的printer没有backcolor......
    回复zdingyun我最早就是用的这种方法不过一直打出来字比较模糊。我再去试试看
      

  6.   


    不好意思,我弄错了,是fillcolor属性fillcolor=0
    forecolor=&hffffff
    line (x1,y1)-(x2,y2),,bf
      

  7.   


    貌似这样的代码执行效果不错:
    Private Sub Command1_Click()
        Printer.Line (0, 0)-(5000, 1000), vbBlack, BF
        Printer.FontSize = 10
        Printer.ForeColor = vbWhite
        Printer.CurrentX = 100
        Printer.CurrentY = 100
        Printer.Print "黑底白字"
        Printer.EndDoc
    End Sub
      

  8.   

    最终解决方法.无奈.图文分离
    就是黑框上的字做成picture,其它文字直接printer打印,这样效果还勉强凑合.
    谢谢zdingyun朋友的热心o