====求一个打印方案,愿以1000元现金答谢,一定报酬!!!====
alj 2004-08-30 11:32:58 需求如下,使用VB6新建一个工程,在默认的Form1上:
1)放置一个CommandButton控件
2)放置一个PictureBox控件,默认名称为Picture1,在Picture1里面在放置一个PictureBox控件,默认名称为Picture2控件,在Picture2里面放置一个RichTextBox和一个OLE控件,默认名称分别为RichTextBox1和Ole1
3)在窗体上放置一个水平滚动条和一个垂直滚动条,默认名称为VScroll1和HScroll1
4)进入代码视图,插入如下代码:
Private Sub Command1_Click()
Dim str As String
str = "这里需要实现打印PictureBox2上面所有元素的程序..."
str = str & vbCrLf & vbCrLf & "请你帮忙!!"
MsgBox str, vbInformation, "谢谢你"
End Sub
Private Sub Form_Load()
InitSize
Dim strRTF As String
strRTF = "{\rtf1\ansi\ansicpg936\deff0{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}"
strRTF = strRTF & "{\f1\fswiss\fprq2\fcharset0 Arial Black;}{\f2\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}"
strRTF = strRTF & "{\colortbl ;\red255\green0\blue0;\red128\green0\blue0;\red0\green0\blue255;}"
strRTF = strRTF & "{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}{\s3 heading 3;}"
strRTF = strRTF & "{\s4 heading 4;}{\s5 heading 5;}{\s6 heading 6;}{\s7 heading 7;}{\s8 heading 8;}{\s9 heading 9;}}"
strRTF = strRTF & "\viewkind4\uc1\pard\cf1\lang1033\b\f0\fs32 Test word\cf0\b0"
strRTF = strRTF & "\par \pard\keepn\s8\cf2\i\f1 Test word Test word Test word Test word"
strRTF = strRTF & "\par \pard\keepn\s9\cf3\ul\b\i0\f0\fs28 This is test content\'85\'85"
strRTF = strRTF & "\par \pard\cf0\lang2052\ulnone\b0\f2\fs18 \par }"
RichTextBox1.TextRTF = strRTF
OLE1.CreateEmbed App.Path & "\mydoc.doc"
End Sub
Private Sub InitSize()
'初始化页面所有控件的大小及位置
'On Error Resume Next
Command1.Move 120, 120, 1800, 375
Command1.Caption = "打印Picture2控件"
Picture1.Move 120, 600, Me.ScaleWidth - 555, Me.ScaleHeight - 1050
Picture1.BackColor = vbApplicationWorkspace
Picture1.ScaleMode = 3 'Pixel
Picture2.Move 20, 20, 794, 1123 'Picture2刚好为一张A4纸的大小
HScroll1.Move 120, Picture1.Top + Picture1.Height, Picture1.Width, 315
VScroll1.Move Picture1.Left + Picture1.Width, 600, 315, Picture1.Height
VScroll1.min = 0
VScroll1.max = IIf((Picture2.Height + 40 - Picture1.Height / 15) < 0, 0, Picture2.Height + 40 - Picture1.Height / 15)
VScroll1.SmallChange = Picture1.Height / 60
VScroll1.LargeChange = Picture1.Height / 15
HScroll1.min = 0
HScroll1.max = IIf((Picture2.Width + 40 - Picture1.Width / 15) < 0, 0, Picture2.Width + 40 - Picture1.Width / 15)
HScroll1.SmallChange = Picture1.Width / 60
HScroll1.LargeChange = Picture1.Width / 15
Picture2.ScaleMode = 3
RichTextBox1.Move 60, 60, 674, 150
OLE1.Move 60, 215, 674, 848
End Sub
Private Sub Form_Resize()
InitSize
End Sub
Private Sub VScroll1_Change()
Picture2.Top = 20 - VScroll1.value
End Sub
Private Sub VScroll1_GotFocus()
Picture2.SetFocus
End Sub
Private Sub VScroll1_Scroll()
Picture2.Top = 20 - VScroll1.value
End Sub
Private Sub HScroll1_Change()
Picture2.Left = 20 - HScroll1.value
End Sub
Private Sub HScroll1_GotFocus()
Picture2.SetFocus
End Sub
Private Sub HScroll1_Scroll()
Picture2.Left = 20 - HScroll1.value
End Sub
5)最后,在应用程序的目录新建一个名为“mydoc.doc”的WORD文档,随便在文档里面插入一些表格和文字,保存并关闭
6)运行应用程序。
现在的问题:我的目的是想单击Command1按钮打印Picture2上的所有内容,保存RichtextBox里面的格式文本以及嵌入在OLE里面的WORD文档。我尝试了很多种方法,都没有办法成功,这几种方法都是围绕如何将Picture2转换成一个BMP位图,然后再打印该位图。但是所有方法都最多转换Picture2的可见部分,不可见部分无法保存。
这只是解决我问题的一个示例程序,实际我的方案中,每个需要打印的PictureBox都可能包含每个RichTextBox控件,并且RichTextBox控件是放置再OLE上方的。
如果使用位图打印整个Picture2的,这样虽然虽然可以解决,但不是狠完美,因为使用BMP格式打印出来文字清晰度不够,有锯齿。如果能够清晰的打印出Picture2,我愿意出1000元感谢,我在广州,银行划帐、汇款都可以。当然这只是我的一个手段,因为最近很多问题都无人做答,对于真正的高手,1000真不算什么。无论怎样,我一定会重重酬谢!!!!