Visual Basic VB编程 如何将Line和图象共容(分很高)

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:34:51
这个问题不是三言两语就能说清楚的,不过请各位编程高手给我出出主意,悬赏分100分,很高...

我是个VB初学者,最近在编一个图纸绘制程序,就是在PictureBox中用PrintPicture绘制图象,网格是必不可少的,而且必须有隐藏网格的功能,不过就在这个网格和图象兼容方面出现了问题...

下面是我的一些想法和失败的原因...

想法:用一堆Line控件(15+12)在PictureBox上绘制网格...
失败原因:代码特别复杂,滚动时很不稳定(如果没有别的方法只有用这个)...

想法:用PictureBox.line方法绘制网格...
失败原因:网格位于图象下方,而且无法隐藏网格...

想法:用Shape控件的网格功能充当网格...
失败原因:无法调整网格的宽度,我要480...

想法:在PictureBox上画一个ImageBox,在上方画线...
失败原因:ImageBox没有Line功能,也不能储存控件...

想法:用OLE控件设成透明,在上方储存线条显示...
失败原因:OLE控件也无法储存控件...

之后我就一点也没招了...哪位高手有高招,请一定要帮帮我,我会滴水之恩,涌泉相报...非常感谢!!!

PS:关于这个问题我会随时补充...
xyl3389正解...所以说必须保存图象而且可以隐藏网格...

对,我说错了,是PaintPicture,不是PrintPicture...

如果网格大小是固定的话,把网格做成一张gif图片,除了线条部分,其余的是透明色,把这个gif载入到image控件中,放在picturebox上方,要显示和隐藏只需要针对image操作就行了

VB6中未见PrintPicture方法,只有PaintPicture方法.以下VB6的代码,网格位于图象上方,而且可以隐藏网格.
Option Explicit
Dim i As Integer
Dim j As Integer
Dim flagClear As Boolean

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
If flagClear Then
Picture1.Cls
Command1.Caption = "画网格"
For i = 0 To 5
For j = 0 To 5
Picture1.PaintPicture PicF.Picture, j * PicF.Width, i * PicF.Height, PicF.Width, -PicF.Height
Next j
Next i
Else
For i = 0 To 15
Picture1.Line (0, 500 * i)-(10500, 500 * i)
Next
For j = 1 To 20
Picture1.Line (500 * j, 0)-(500 * j, 6500)
Next
Command1.Caption = "清除"
End If
flagClear = Not flagClear
End Sub

Private Sub Form_Load()
Command1.Caption = "画网格"
End Sub

Private Sub Command2_Click()
F