17 Ağustos 2013 Cumartesi
GRAFİK ÇİZDİRME KODLARI
Grafik çizdirme kodları
İNDİR
Imports System.Math Imports System.Threading Public Class Form1 Private G_Ciz As Integer Private Rnd_D As Integer Private Const GRID_STEP As Integer = 40 Private Gr_Cizgisi As Thread ' Hazır Private Sub Form1_Load() Handles MyBase.Load G_Ciz = GrafikPic.ClientSize.Height \ 2 Rnd_D = G_Ciz 'Bitmap ve Grafik nesneleri Dim En As Integer = GrafikPic.ClientSize.Width Dim Boy As Integer = GrafikPic.ClientSize.Height Dim En_Boy As New Bitmap(En, Boy) Using Grafik As Graphics = Graphics.FromImage(En_Boy) ' Kılavuz çizgiler çiz Grafik.Clear(Color.Blue) For i As Integer = G_Ciz To GrafikPic.ClientSize.Height Step GRID_STEP Grafik.DrawLine(Pens.LightBlue, 0, i, En - 1, i) Next i For i As Integer = G_Ciz To 0 Step -GRID_STEP Grafik.DrawLine(Pens.LightBlue, 0, i, En - 1, i) Next i End Using ' Grafik GrafikPic.Image = En_Boy End Sub ' Grafik çizimini başlat Private Sub GrafikBtn_Click(sender As System.Object, e As System.EventArgs) Handles GrafikBtn.Click If Gr_Cizgisi Is Nothing Then ' Başlatın. DurumGoster("Grafik çizimini Başlattınız") Gr_Cizgisi = New Thread(AddressOf GrafikOlustur) Gr_Cizgisi.Priority = ThreadPriority.BelowNormal Gr_Cizgisi.IsBackground = True Gr_Cizgisi.Start() GrafikBtn.Text = "Dur" Else ' çalışıyor. Durdur. DurumGoster("Çizimi Durdur") Gr_Cizgisi.Abort() Gr_Cizgisi = Nothing GrafikBtn.Text = "Başla" End If End Sub ' Durana kadar grafik çiz Private Sub GrafikOlustur() Try 'Rasgele değerler üret Dim y As Integer = Rnd_D Do 'Sonraki değeri oluştur YeniDeger() ' Yeni değeri çiz DegerBelirle(y, Rnd_D) y = Rnd_D Loop Catch ex As Exception DurumGoster(" Çizim Durduruldu.. ") '& ex.Message) End Try End Sub ' Sonraki değeri oluştur Private Sub YeniDeger() ' Değer hesaplamadan önce biraz geciktir Dim stop_time As Date = Now.AddMilliseconds(20) Do While Now < stop_time Loop ' Bir sonraki değerini hesapla Static rnd As New Random Rnd_D += rnd.Next(-4, 5) If Rnd_D < 0 Then Rnd_D = 0 If Rnd_D >= GrafikPic.ClientSize.Height - 1 Then Rnd_D = GrafikPic.ClientSize.Height - 1 End Sub ' Yeni bir değer çiz Private Delegate Sub PlotValueDelegate(ByVal eski_y As Integer, ByVal Yeni_y As Integer) Private Sub DegerBelirle(ByVal eski_y As Integer, ByVal Yeni_y As Integer) If Me.InvokeRequired Then ' Temsilci için argümanlar Dim Tnsn As Object() = {eski_y, Yeni_y} 'Temsilci Dim Yeni_Deger_Bul As PlotValueDelegate Yeni_Deger_Bul = AddressOf DegerBelirle ' iş parçacığı üzerinde temsilci çağır Me.Invoke(Yeni_Deger_Bul, Tnsn) ' Bitti Exit Sub End If ' Bitmap ve Grafik nesneleri Dim En As Integer = GrafikPic.ClientSize.Width Dim Boy As Integer = GrafikPic.ClientSize.Height Dim En_Boy As New Bitmap(En, Boy) Using Grafik As Graphics = Graphics.FromImage(En_Boy) 'Eski veriyi bir piksel sola taşı Grafik.DrawImage(GrafikPic.Image, -1, 0) ' Sağ kenarı sil ve kılavuz çizgiler çiz Grafik.DrawLine(Pens.Blue, En - 1, 0, En - 1, Boy - 1) For i As Integer = G_Ciz To GrafikPic.ClientSize.Height Step GRID_STEP Grafik.DrawLine(Pens.LightBlue, En - 2, i, En - 1, i) Next i For i As Integer = G_Ciz To 0 Step -GRID_STEP Grafik.DrawLine(Pens.LightBlue, En - 2, i, En - 1, i) Next i ' Yeni bir piksel çiz Grafik.DrawLine(Pens.White, En - 2, eski_y, En - 1, Yeni_y) ' Sonucu görüntüle GrafikPic.Image = En_Boy GrafikPic.Refresh() End Using End Sub ' DurumTxt 'e bir dize ekle Private Delegate Sub AddStatusDelegate(ByVal txt As String) Private Sub DurumGoster(ByVal txt As String) If Me.InvokeRequired Then ' Temsilci argümanlar Dim Tnsn As Object() = {txt} ' Temsilci Dim DurumuGoster As AddStatusDelegate DurumuGoster = AddressOf DurumGoster ' iş parçacığı üzerinde temsilci çağır Me.Invoke(DurumuGoster, Tnsn) 'Bitti Exit Sub End If DurumTxt.Text &= vbCrLf & txt DurumTxt.Select(DurumTxt.Text.Length, 0) DurumTxt.ScrollToCaret() End Sub ' Güncel saati görüntüle Private Sub SureGuncelleTmr_Tick() Handles SureGuncelleTmr.Tick SureLbl.Text = Now.ToString("T") End Sub End Class
Sonraki Kayıt
Önceki Kayıt
Ana Sayfa