Kirjautuminen

Haku

Tehtävät

Koodit: VB.NET: Kaksoispuskurointi

Kirjoittaja: ez

Kirjoitettu: 26.12.2003 – 26.12.2003

Tagit: koodi näytille, vinkki

Varmaan hyvin monella meistä on VB-ohjelma, jossa on grafiikkaa joka on välkkynyt ikävästi. VB.NET:in myötä basicillä on helppoa toteuttaa kaksoispuskurointi joka poistaa ohjelmista välkkymisen.

Idea perustuu siihen, että kaikki piirretään ensiksi puskuriin ja kun kaikki on piirretty siirretään valmis kuva näkyville.

Yritin tehdä koodista mahdollisimman yksinkertaisen, jotta perusidea olisi helppoa hoksata!

Imports System.Drawing.Imaging
Private g As Graphics
    Private puskuri As Graphics
    Private puskurinKuva As New Bitmap(400, 300, PixelFormat.Format32bppRgb)
    Private alkuAika As Int32 'Tähän talletetaan aika silmukan alussa
    Private pallonX As Short = 200
    Private nopeusX As Double = 5
    Private pensseli As System.Drawing.SolidBrush 'Tällä piirretään pallo
    Private säde As Short = 30 'Pallon säde

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Formin koko
        Me.Width = 400
        Me.Height = 300
        'Luodaan grafiikat
        g = Me.CreateGraphics
        'Luodaan puskuri
        puskuri = Graphics.FromImage(puskurinKuva)
        'Luodaan pensseli ja asetetaan väriksi punainen
        pensseli = New System.Drawing.SolidBrush(Color.Red)
        'Formi näkyviin
        Me.Show()

        'Ikuinen silmukka
        Do While 1 = 1
            'Asetetaan alkuaika viivettä varten
            alkuAika = System.Environment.TickCount()
            'Päivitetään pallon paikkaa
            pallonX += nopeusX
            'Jos pallo on saavuttamassa reunan muutetaan suunta
            If pallonX < 50 Or pallonX > 320 Then nopeusX = -nopeusX

            'Pyyhitään puskurin kuva
            puskuri.Clear(Color.Black)

            'Piirretään pallo puskuriin
            puskuri.FillEllipse(pensseli, pallonX, 140, säde, säde)
            'Sitten piirretään puskurin kuva formille. Nyt voimme olla
            'varmoja, että piirrämme valmiin kuvan, joten välkkymistä ei ole havaittavissa.
            g.DrawImage(puskurinKuva, 0, 0)

            'Aiheutetaan viive
            Do While System.Environment.TickCount() - alkuAika < 30
                Application.DoEvents()
            Loop
        Loop

    End Sub

Kommentit

miiro [26.12.2003 18:48:53]

#

miten tätä vb.nettii käytetään niinku pitääks se laittaa internettisivulle koko koodi vai miten?

ez [26.12.2003 19:12:29]

#

Ihan samalla tavalla kuin VB6:ssa. Kyseinen koodi ei liity mitenkään internettiin... Niin, ku näet niin toi on aliohjelma suoritetaan kun formi latautuu.

NanoSoft [23.02.2006 21:10:09]

#

ei helvetti... internettisivulle, lol!!1
tuota, tuohan käy melko helposti niinkin, että asettaa formin asetuksista(designeristä) doublebuffer:in trueksi...

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta