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
miten tätä vb.nettii käytetään niinku pitääks se laittaa internettisivulle koko koodi vai miten?
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.
ei helvetti... internettisivulle, lol!!1
tuota, tuohan käy melko helposti niinkin, että asettaa formin asetuksista(designeristä) doublebuffer:in trueksi...