Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Lämpötilakäyrä vbNETtiin, koodi

AimoKulaus [13.06.2006 10:17:37]

#

Alla on esimerkki lämpötilojen näytöstä vbNETissä. Tämä piirtää 3 lämpötilakäyrää samaan kuvaan.

Ohjelma käyttää hyväksi Microsoft Officen käyttämiä kaavioita, eli siis Office pitää olla asennettuna.

Aloita uusi projekti. Valitse Tools / Choose Toolbox items... / COM components, ja valitse sieltä Microsoft Office Charts (jos on useita versioita, niin valitse vaan kaikki)
Valitse sitten vasemman reunan Toolboxista Microsoft Office Chart, ja piirrä sillä Formiin neliö. Muuta sen nimeksi Lämpökaavio
Tee myös ajastin, Timer1, lomakkeelle.

Sitten Kopioi / Liitä oheinen ohjelma koodi-ikkunaan siten, että se korvaa sieltä kaiken.

Ohjelman käynnistyksen jälkeen pitäisi tulla viivakaavio näkyviin. Ohjelma "mittaa" lämpötiloja, ja käyrää alkaa ilmestyä. Kaavio skaalautuu automaattisesti. Kun 20 mittausta on tullut täyteen, niin käyrät alkavat scrollata vasemmalle.

Koodissa on myös paljon eri ominaisuuksien asetteluja. Nämä pitäisi kyllä riittää normaalikäyttöön. Hiiren oikealla klikkaamalla saa valikon, ja siellä on lisää valintoja.

Public Class Form1

    Const Kpl = 20            ' Montako lukemaa näytetään kaaviossa
    Dim seriesNames(3) As Object ' Montako käyrää
    Dim categories(Kpl) As Object
    Dim values1(Kpl) As Object
    Dim values2(Kpl) As Object
    Dim values3(Kpl) As Object

    Dim c As Object


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Nämä ovat Timerin alustuksia
        Timer1.Interval = 1000
        Timer1.Enabled = True

        ' Kaavio -----------------------------------------------------------------
        Lämpökaavio.Clear()
        Lämpökaavio.Charts.Add()
        c = Lämpökaavio.Constants

        Lämpökaavio.Height = 400 ' Kaavion koko
        Lämpökaavio.Width = 600

        Lämpökaavio.HasChartSpaceTitle = True
        Lämpökaavio.ChartSpaceTitle.Font.Size = 16
        Lämpökaavio.ChartSpaceTitle.Font.Bold = True
        Lämpökaavio.ChartSpaceTitle.Caption = "Lämpötilat"

        seriesNames(0) = "2,0 m"    ' Selitteet
        seriesNames(1) = "Maanpinta"
        seriesNames(2) = "Maaperä"

        With Me.Lämpökaavio.Charts(0)
            '.Type = OWC11.ChartChartTypeEnum.chChartTypeLine
            .Type = 6   ' Line eli viivakaavio

            ' Yhteensä 3 käyrää
            .SeriesCollection.Add()
            .SeriesCollection.Add()
            .SeriesCollection.Add()

            .SeriesCollection(0).Caption = seriesNames(0) ' Selite
            .SeriesCollection(0).SetData(c.chDimCategories, c.chDataLiteral, categories) ' Käyrän alla oleva aika
            .SeriesCollection(0).SetData(c.chDimValues, c.chDataLiteral, values1) ' Arvot
            .SeriesCollection(0).Line.Color = QBColor(12) ' Väri
            .SeriesCollection(0).Line.Weight = 2    ' Paksu viiva

            .SeriesCollection(1).Caption = seriesNames(1)
            .SeriesCollection(1).SetData(c.chDimCategories, c.chDataLiteral, categories)
            .SeriesCollection(1).SetData(c.chDimValues, c.chDataLiteral, values2)
            .SeriesCollection(1).Line.Color = QBColor(2)
            .SeriesCollection(1).Line.Weight = 2

            .SeriesCollection(2).Caption = seriesNames(2)
            .SeriesCollection(2).SetData(c.chDimCategories, c.chDataLiteral, categories)
            .SeriesCollection(2).SetData(c.chDimValues, c.chDataLiteral, values3)
            .SeriesCollection(2).Line.Color = QBColor(3)
            .SeriesCollection(2).Line.Weight = 2

            .HasLegend = True

            ' Asteikko 5 asteen välein
            .Axes(c.chAxisPositionLeft).MajorUnit = 5

            ' Alareunaan merkit
            .Axes(c.chAxisPositionbottom).TickLabelSpacing = 5 ' Aikalukema 5 välein
            .Axes(c.chAxisPositionbottom).TickMarkSpacing = 1  ' Merkki joka lukeman kohdalle

            .PlotArea.Interior.Color = &HCCFFFF  ' Kaavion taustaväri
        End With

        ' Lämpökaavio.ExportPicture("C:\lampo.gif", "gif", 600, 400)

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim i As Integer

        ' Siirretään lukemia pykälä taaksepäin
        For i = 0 To Kpl - 1
            values1(i) = values1(i + 1)
            values2(i) = values2(i + 1)
            values3(i) = values3(i + 1)
            categories(i) = categories(i + 1)
        Next

        ' Uudet arvot
        categories(Kpl) = Format(Now, "hhmmss")
        values1(Kpl) = 20 + Rnd() * 4   ' Satunnaislukuja
        values2(Kpl) = 24 + Rnd() * 8   ' kuvaavat lämpötiloja
        values3(Kpl) = 12 + Rnd() * 3

        c = Lämpökaavio.Constants
        With Lämpökaavio.Charts(0)
            .SetData(c.chDimCategories, c.chDataLiteral, categories)
            .SeriesCollection(0).SetData(c.chDimValues, c.chDataLiteral, values1)
            .SeriesCollection(1).SetData(c.chDimValues, c.chDataLiteral, values2)
            .SeriesCollection(2).SetData(c.chDimValues, c.chDataLiteral, values3)
        End With
        'Lämpökaavio.ExportPicture("C:\lampo.gif", "gif", 600, 400)
    End Sub
End Class

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta