Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Kolmiulotteinen teksti

Kirjoittaja: Antti Laaksonen

Kirjoitettu: 30.11.2002 – 30.11.2002

Tagit: grafiikka, koodi näytille, vinkki

Tämä ohjelma luo tekstille 3d-varjostuksen Visual Basicissa. Kaikki kuvan ominaisuudet, kuten koko, tekstin fontti ja koko, värit, 3d-varjostuksen keskipiste ja pituus ovat säädettävissä. Nopeuden pitäisi olla suht' koht' siedettävä, optimointivaraa kuitenkin vielä on. Formilla on oltava kaksi tavallista PictureBoxia, nimillä Picture1 ja Picture2.

Private Sub Form_Activate()
    'muuttujamäärittelyt
    Dim leveys As Integer, korkeus As Integer
    Dim tv As Long, v1 As Long, v2 As Long
    Dim tn As String, tk As Integer, teksti As String
    Dim kpx As Integer, kpy As Integer
    Dim lax As Integer, lay As Integer
    Dim i As Integer, j As Integer

    'kuvan asetukset
    leveys = 300: korkeus = 200 'kuvan koko
    tv = RGB(255, 255, 255) 'taustaväri
    v1 = RGB(127, 127, 255) 'edustaväri
    v2 = RGB(0, 0, 127) '3d-väri
    tn = "Arial": tk = 30 'tekstityyppi ja tekstin koko
    teksti = "Ohjelmointiputka" 'teksti
    kpx = 150: kpy = 150 '3d:n keskipiste
    kpp = 0.15 '3d:n pituus 0-1

    'kuvien alustaminen
    Picture1.Width = leveys: Picture2.Width = leveys
    Picture1.Height = korkeus: Picture2.Height = korkeus
    Picture1.BackColor = tv: Picture2.BackColor = tv
    Picture1.FontName = tn: Picture2.FontName = tn
    Picture1.FontSize = tk: Picture2.FontSize = tk
    Picture1.ForeColor = v1: Picture2.ForeColor = v1

    'teksti apukuvaan
    lax = Picture2.TextWidth(teksti) / 2
    lay = Picture2.TextHeight(teksti) / 2
    Picture2.CurrentX = leveys / 2 - lax
    Picture2.CurrentY = korkeus / 2 - lay
    Picture2.Print teksti

    '3d:n piirtäminen
    For i = leveys / 2 - lax To leveys / 2 + lax
        For j = korkeus / 2 - lay To korkeus / 2 + lay
            If Picture2.Point(i, j) <> tv And Picture2.Point(i, j) <> -1 Then
                Picture1.Line (i, j)-(i + (kpx - i) * kpp, j + (kpy - j) * kpp), v2
            End If
        Next
        DoEvents
    Next

    'päälle teksti toisella värillä
    Picture1.CurrentX = leveys / 2 - Picture1.TextWidth(teksti) / 2
    Picture1.CurrentY = korkeus / 2 - Picture1.TextHeight(teksti) / 2
    Picture1.Print teksti
End Sub

Private Sub Form_Load()
    ScaleMode = 3
    Picture1.AutoRedraw = True: Picture2.AutoRedraw = True
    Picture1.ScaleMode = 3: Picture2.ScaleMode = 3
End Sub

Kommentit

LL [01.12.2002 10:45:02]

#

Aika hieno

N [01.12.2002 11:02:34]

#

Iha sika Hieno,Hyvä Antti ;D

InvalidCo [30.05.2003 13:09:01]

#

Hieno! Entä QB:llä??

-PC-Master-

Monkkats [20.09.2003 17:21:52]

#

Vähäks hieno!!

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta