图形处理问题
最近在用VB.NET做一个网络监控的东西,但遇到个问题,比如说在一张楼房层的平面图上要表示出这层楼的一些被监控点,我刚开始采用自制控件的形式来表示,这是可以的,但是当楼层的被监控点过多时系统加载控件太多运行起加载控件速度就太慢了,所以我想采用另一种方式来实现,我想到了用drawImage来进行画点的方式,可是出现个问题就是你选择不同的楼层时要画来对应的点来,并且楼层被监控点的数量是不确定,只能通过动态的。这样就出现了画来的点只是当你选择楼层时它只是相应的一闪而过不会永久的保存在平面图上。
sql1 = "select CaiYangType,CaiYangCoding,KongJianX,KongJianY from CaiYangValue where —GongChengName='" & ParentNodeText & "' and BuWeiName='" & NodeText & "'"
Call FillDataSet2Table(sql, sql1)
Dim g As Graphics
Dim LEDString As String = ""
g = PBGongChengImage.CreateGraphics
Dim font As New Font("宋体", 14, FontStyle.Regular, GraphicsUnit.Pixel, 1)
For i As Integer = 0 To DSet.Tables("B").Rows.Count - 1
g.DrawImage(PBLED.Image, DSet.Tables("B").Rows(i).Item(2), DSet.Tables("B").Rows(i).Item(3), 15, 15)
Select Case DSet.Tables("B").Rows(i).Item(0)
Case "感烟探测器"
LEDString = "Y" & DSet.Tables("B").Rows(i).Item(1)
Case "感温探测器"
LEDString = "W" & DSet.Tables("B").Rows(i).Item(1)
Case "气体探测器"
LEDString = "Q" & DSet.Tables("B").Rows(i).Item(1)
Case "手动报警按钮"
LEDString = "S" & DSet.Tables("B").Rows(i).Item(1)
Case "声光报警器"
LEDString = "G" & DSet.Tables("B").Rows(i).Item(1)
End Select
g.DrawString(LEDString, font, Brushes.Orange, DSet.Tables("B").Rows(i).Item(2) - 5, DSet.Tables("B").Rows(i).Item(2) + 15)
Next
PBGongChengImage与PBLED为picturebox控件 PBGongChengImage是用来显示楼层平面图的 不能用将被监控点的先画在平面图上,然后再保存整张图(有被监控点的图)
不知哪位高手能否指一二,或许还有什么更好的办法不?