Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: TextBox ja diagrammi

Coquimbo [25.03.2004 12:19:02]

#

Moi!

Minulla on sellainen ongelma, että pitäisi saada esim. piirakkadiagrammi kuvaamaan tiettyjen textboxien arvoja.
Miten tällainen systeemi kannattaisi toteuttaa. Saisinko esimerkin kyseisestä lähdekoodista? Kiitos.

Antti Laaksonen [25.03.2004 13:47:02]

#

Tässä on yksinkertainen esimerkki asiasta. Ohjelman toiminta perustuu trigonometrisiin funktioihin, joiden avulla saadaan tietoon ympyrän kehällä olevan pisteen paikka kulman perusteella. Kulmat ovat radiaaneina, jolloin täysi ympyrä on 2 * PII radiaania.

'tätä funktiota tarvitaan alueen täyttämiseen
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long

Const PII = 3.14159

Private Sub Form_Click()
    'mittayksiköksi pikseli
    ScaleMode = 3

    Dim x As Long, i As Integer, yht As Integer
    Dim a As Single, l As Single
    Dim tiedot() As Variant
    'diagrammin arvot
    tiedot = Array(27, 39, 10, 23, 33)

    'lasketaan arvojen yhteissumma
    For i = 0 To UBound(tiedot)
        yht = yht + tiedot(i)
    Next

    'piirretään piirakan pohjana oleva ympyrä
    Circle (100, 100), 80
    a = 0
    'tästä lähtien kuviot täytetään
    FillStyle = 0
    For i = 0 To UBound(tiedot)
        'lasketaan uusi lopetuskohta
        l = a + tiedot(i) / yht * 2 * PII
        'määritetään piirakan osan väri
        FillColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
        'vedetään alueen reunaviivat
        Line (100, 100)-(100 + Sin(a) * 80, 100 + Cos(a) * 80)
        Line (100, 100)-(100 + Sin(l) * 80, 100 + Cos(l) * 80)
        'täytetään alue
        x = ExtFloodFill(Me.hdc, 100 + Sin((a + l) / 2) * 20, 100 + Cos((a + l) / 2) * 20, 0, 0)
        'nykyinen lopetuskohta on seuraavalla kerralla aloituskohta
        a = l
    Next
End Sub

Vastaus

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

Tietoa sivustosta