首先要有矢量化的地圖,剩下的就是計算機圖形學(xué)中的填充問題了。還有一種笨方法,但很可行,將大地圖拆分成多個小地圖,并分別填充不同的顏色,需要哪個區(qū)域哪個顏色直接調(diào)用就行了。
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)與策劃設(shè)計,阜新網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:阜新等地區(qū)。阜新做網(wǎng)站價格咨詢:18980820575
簡單說下思路吧,具體的代碼可以查資料
首先要會畫曲線圖,有三種方法:
1、用mschar控件(vb6的);2、用水晶報表;3、用word圖表
x軸為時間,y軸為數(shù)據(jù)
要實現(xiàn)實時數(shù)據(jù)刷新,只要用 定時器 定時刷新曲線圖的數(shù)據(jù)就可以了(x、y的數(shù)據(jù)重寫)
'中值濾波:
Dim x As Integer, y As Integer, size As Integer = 3, point(8) As Integer
For x = CInt((size - 1) / 2) To CInt(jpgImage.Width - 1 - (size - 1) / 2)
For y = CInt((size - 1) / 2) To CInt(jpgImage.Height - 1 - (size - 1) / 2)
point(0) = jpgImage.GetPixel(x - 1, y - 1).R
point(1) = jpgImage.GetPixel(x - 1, y).R
point(2) = jpgImage.GetPixel(x - 1, y + 1).R
point(3) = jpgImage.GetPixel(x, y - 1).R
point(4) = jpgImage.GetPixel(x, y).R
point(5) = jpgImage.GetPixel(x, y + 1).R
point(6) = jpgImage.GetPixel(x + 1, y - 1).R
point(7) = jpgImage.GetPixel(x + 1, y).R
point(8) = jpgImage.GetPixel(x + 1, y + 1).R
Array.Sort(point)
jpgImage.SetPixel(x, y, Color.FromArgb(point(4), point(4), point(4)))
Next
Next
加入一個TextBox控件,一個Command控件
代碼:
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Sub Command1_Click()
Dim Color As Long
WindowDC = GetWindowDC(0) '獲取屏幕的設(shè)備場景
Color = GetPixel(WindowDC, 500, 100) '獲指定點的顏色
'分解RGB顏色值
R = (Color Mod 256) '紅色
b = (Int(Color \ 65536)) '藍色
G = ((Color - (b * 65536) - R) \ 256) '綠色
Text1.BackColor = RGB(R, G, b)
End Sub
一、分析:
1,這一類隨時間而變化的曲線圖,通常把橫軸作為時間,把縱軸作為相應(yīng)的值,在這里就是密度值。
2,點的集合就是線;一組時間、密度值,對應(yīng)一個點,把點連接起來就構(gòu)成了線。
二、在VB.NET中作圖,需要知道并解決幾個問題:
1,與VB6一樣,VB.NET中默認(rèn)的坐標(biāo)系統(tǒng),左上角為坐標(biāo)原點,X軸的正向為從左向右,Y軸的正向是從上向下。
為了使得它與數(shù)學(xué)中的坐標(biāo)系統(tǒng)相一致,可以使用VB.NET中Graphics類的兩個方法;
1、TranslateTransform----平移變換
格式:Graphics.TranslateTransform(dx,dy)
其中:dx 和 dy分別是Single數(shù)據(jù)類型
2、ScaleTransform----縮放變換
格式:Graphics.ScaleTransform(sx,sy)
其中:sx 和 sy分別是Single數(shù)據(jù)類型;
例如:為了符合數(shù)學(xué)中的一般格式,可以使用下述代碼:
Graphics.ScaleTransform(1, -1)
這樣就把Y軸的正方向給翻過來了。
三、VB.NET中繪制圖形
1,繪制圓或橢圓
'繪制圖形的三步曲
'1,獲得一個Graphics對象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個Pen對象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
'3,定義一個Brush對象,用于填充圖形(如果需要填充的話)
Dim MyBrush As New SolidBrush(Color.Orange)
'繪制一個實心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.FillEllipse(Brush, 200, 200, 100, 100)
'繪制一個空心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.DrawEllipse(Pen, 200, 200, 100, 100)
注意:最后兩個數(shù)值如果不等,就是繪制橢圓
當(dāng)圓足夠小,就是點了。
2,繪制直線
'1,獲得一個Graphics對象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個Pen對象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
MyGraphics.DrawLine(MyPen, 200, 200, 100, 100)
'或者直接用
Me.CreateGraphics.DrawLine(New Pen(Color.Black), 50, 50, 200, 200)