在VB中,如果将文字图片画到picturebox上,那么可以很轻易的打印出任意图文混合效果,但是文字效果却总是比较模糊.主要原因应该是分辨率上的关系。但确不知如何解决。如果直接用printer打印,在打印黑框内嵌入白色的情况时又不知如何处理.真是比较郁闷.
所以希望熟打印的朋友,如何才能清晰的在单色机上打印出黑底框白色字?应该是两种解决办法
1.如何用picturebox画出来的图分辨率比较高能将文字打印清晰?
2.如何用printer.print+printer.line画出黑框,并将白字色加入黑框中?例如这种效果
http://www.sh1122.com/200803/20080320163011.JPG
所以希望熟打印的朋友,如何才能清晰的在单色机上打印出黑底框白色字?应该是两种解决办法
1.如何用picturebox画出来的图分辨率比较高能将文字打印清晰?
2.如何用printer.print+printer.line画出黑框,并将白字色加入黑框中?例如这种效果
http://www.sh1122.com/200803/20080320163011.JPG
在printer上绘图和在Form上绘图使用相同的逻辑
黑色方框上打印白字,你可以将printer的BackColor设置为黑色,ForeColor设置为白色,然后打印
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
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
回复zdingyun我最早就是用的这种方法不过一直打出来字比较模糊。我再去试试看
不好意思,我弄错了,是fillcolor属性fillcolor=0
forecolor=&hffffff
line (x1,y1)-(x2,y2),,bf
貌似这样的代码执行效果不错:
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
就是黑框上的字做成picture,其它文字直接printer打印,这样效果还勉强凑合.
谢谢zdingyun朋友的热心o