十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
首先要有矢量化的地圖,剩下的就是計(jì)算機(jī)圖形學(xué)中的填充問(wèn)題了。還有一種笨方法,但很可行,將大地圖拆分成多個(gè)小地圖,并分別填充不同的顏色,需要哪個(gè)區(qū)域哪個(gè)顏色直接調(diào)用就行了。
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),阜新網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:阜新等地區(qū)。阜新做網(wǎng)站價(jià)格咨詢:18980820575
簡(jiǎn)單說(shuō)下思路吧,具體的代碼可以查資料
首先要會(huì)畫(huà)曲線圖,有三種方法:
1、用mschar控件(vb6的);2、用水晶報(bào)表;3、用word圖表
x軸為時(shí)間,y軸為數(shù)據(jù)
要實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)刷新,只要用 定時(shí)器 定時(shí)刷新曲線圖的數(shù)據(jù)就可以了(x、y的數(shù)據(jù)重寫(xiě))
'中值濾波:
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
加入一個(gè)TextBox控件,一個(gè)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è)備場(chǎng)景
Color = GetPixel(WindowDC, 500, 100) '獲指定點(diǎn)的顏色
'分解RGB顏色值
R = (Color Mod 256) '紅色
b = (Int(Color \ 65536)) '藍(lán)色
G = ((Color - (b * 65536) - R) \ 256) '綠色
Text1.BackColor = RGB(R, G, b)
End Sub
一、分析:
1,這一類隨時(shí)間而變化的曲線圖,通常把橫軸作為時(shí)間,把縱軸作為相應(yīng)的值,在這里就是密度值。
2,點(diǎn)的集合就是線;一組時(shí)間、密度值,對(duì)應(yīng)一個(gè)點(diǎn),把點(diǎn)連接起來(lái)就構(gòu)成了線。
二、在VB.NET中作圖,需要知道并解決幾個(gè)問(wèn)題:
1,與VB6一樣,VB.NET中默認(rèn)的坐標(biāo)系統(tǒng),左上角為坐標(biāo)原點(diǎn),X軸的正向?yàn)閺淖笙蛴?,Y軸的正向是從上向下。
為了使得它與數(shù)學(xué)中的坐標(biāo)系統(tǒng)相一致,可以使用VB.NET中Graphics類的兩個(gè)方法;
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軸的正方向給翻過(guò)來(lái)了。
三、VB.NET中繪制圖形
1,繪制圓或橢圓
'繪制圖形的三步曲
'1,獲得一個(gè)Graphics對(duì)象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)
Dim MyPen As New Pen(Color.Black)
'3,定義一個(gè)Brush對(duì)象,用于填充圖形(如果需要填充的話)
Dim MyBrush As New SolidBrush(Color.Orange)
'繪制一個(gè)實(shí)心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.FillEllipse(Brush, 200, 200, 100, 100)
'繪制一個(gè)空心圓,該圓在:直線x=200,y=200,x=200+100,y=200+100所劃的矩形區(qū)域內(nèi)
MyGraphics.DrawEllipse(Pen, 200, 200, 100, 100)
注意:最后兩個(gè)數(shù)值如果不等,就是繪制橢圓
當(dāng)圓足夠小,就是點(diǎn)了。
2,繪制直線
'1,獲得一個(gè)Graphics對(duì)象
Dim MyGraphics As Graphics
MyGraphics = Me.CreateGraphics
'2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)
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)