Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Visual Basic

Cevapla
 
LinkBack Seçenekler
Eski 16/04/2008, 12:49   #1 (permalink)
Üye
 
Üyelik Tarihi: 01/2008
Mesaj: 72
Varsayılan Vb'te Grafik işlemleri???

Slm

Visual studioda bir forma bir çizgi çizmek istiyorum ancak kodlarla olacak yani kodlardan çizilecek çizginin x y koordinatlarını belirleyerek.
Yardım pleasee...
maniac_lord hatta değil   Alıntı Yaparak Yanıtla
Eski 16/04/2008, 14:32   #2 (permalink)
Ceviz Lordu
 
cannurbey Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 12/2006
Yer: İstanbul (Avrupa Yakası)
Mesaj: 127
Varsayılan Şu Kodlar Belki İşine Yarayabilir..

Abicim ben bu kodları MCK Soft KodBank 2.9 içeriğinden buldum eğer istersen onu da bir ara buradan upload eder linkini koyarım buraya (ama rapidden :] ) kodlar şöyle abi;

Kod:
'Visual Basic de Grafik İşlemleri(İlk Programlarımız) 1
Line (Çizgi) : Verilen koordinatlar arasına çizgi çizmek için kullanılır.
Kullanılması : 
Line (x1,y1),(x2,y2)
Örnekler : 
Private Sub Command1_Click()
x1=5
y1=100
x2=500
y2=900
Line (x1,y1)-(x2,y2)
End Sub  
 
Line Parametreleri:
Renk : Çizimi renklendirmek için kullanılır.
Kullanılması : 
Line (x1,y1),(x2,y2),Renk
Renk kısmında Rgb(r,g,b) komutu kullanılmıştır. Daha ileride anlatılacaktır. Şu anlık
r = Kırmızı oranı (0-255)
g = Yeşil oranı (0-255)
b = Mavi oranı (0-255)
Örnekler :  
Private Sub Command1_Click()
x1=5
y1=100
x2=500 
y2=900
Line (x1,y1)-(x2,y2),rgb(200,50,50)
End Sub  
 
B : Kare çizmek için kullanılır
Kullanılması : 
Line (x1,y1),(x2,y2),,B
Örnekler :  
Private Sub Command1_Click()
x1=5
y1=100
x2=500
y2=900
Line (x1,y1)-(x2,y2),,B
End Sub  
 
BF : İçi dolu kare çizmek için kullanılır
Kullanılması : 
Line (x1,y1),(x2,y2),,BF
Örnekler :  
Private Sub Command1_Click()
x1=5
y1=100
x2=500
y2=900
Line (x1,y1)-(x2,y2),,BF
End Sub
Bu da ikincisi:

Kod:
'Visual Basic de Grafik İşlemleri(İlk Programlarımız) 2
Line komutundaki parametreler bir arada kullanılabilirler.
Kullanılması : 
Line (x1,y1),(x2,y2),Renk,BF
Örnekler : 
Private Sub Command1_Click()
x1=5
y1=100
x2=500
y2=900
Line (x1,y1)-(x2,y2),rgb(20,20,255),BF
End Sub  
 
Circle (Daire) : Verilen koordinatları merkez kabul sayarak verilen yarıçapta bir daire çizilmesini sağlar. Bu dairenin rengini belirleme parametresi mevcuttur.
Kullanılması : 
Circle (x1,y1),r,Renk
Örnekler :  
Private Sub Command1_Click()
X1 = 250
Y1 = 200
r = 180
Circle (X1, Y1), r, RGB(250, 20, 20)
End Sub  
 
Pset (Nokta Koymak) : Verilen koordinata nokta konulmasını sağlar.
Kullanılması : 
Pset (x1,y1),Renk
Örnekler :  
Private Sub Command1_Click()
X1 = 250
Y1 = 200
Pset (X1,Y1),rgb(255,0,0)
End Sub  
 
Point (Renk Okuma) : Verilen koordinatlarındaki rengin okunmasını sağlar.
Kullanılması : 
Renk=Point (x1,y1)
Örnekler :  
Private Sub Command1_Click()
X1 = 5
Y1 = 100
X2 = 500
Y2 = 900
Line (X1, Y1)-(X2, Y2), , BF
Renk = Point(50, 50)
MsgBox Renk
End Sub
Bu da başka bir kod :

Kod:
Z = F( X , Y ) türünden 3 boyutlu fonksiyonların grafiğini çizen program. Zoom ve Bakış Açısı ayarlaması da mevcut.

FORM NESNELERİ VE AYARLARI 
--------------------------------------------------------------------------------
İlk önce basit bir çizim için gereken nesneleri ekleyelim.
 
picturebox :
--------------
name = ekran
backcolor = beyaz
height = 4800
width = 6400
AutoReDraw = true
command button :
---------------------
name= cmdCiz
caption = &Çiz
 
Program içerisinde belirlediğimiz bir fonksiyonu butona basıp çizdireceğiz. Bu fonksiyon : 
Z = sin( X + Y ) fonksiyonu olsun. Fonksiyonun çizim aralığı -3 < X < 3 ve -3 < Y < 3 olsun.
 
Dim h As Long, V As Long ' Ekrandaki konum değişkenleri
Dim XX As Double, YY As Double, ZZ As Double ' Denklemdeki X,Y ve Z değeri
Dim TX As Integer, TY As Integer, TZ As Integer
Dim k As Integer
Const E = 2.7182818281
Const pi = 3.14159265358
Private Sub cmdciz_Click()
k = 400 ' Zoom Değişkeni
hh = 0.3 ' Çizim Hassasiyeti Değişkeni. Pixel Adımlarını Belirler.

TX = 0 ' X yönü Bakış Açısı
TY = 30 ' Y yönü Bakış Açısı
TZ = 90 ' Z yönü Bakış Açısı

ekran.Cls

YY = -3

For XX = -3 To 3 Step hh
YY = -3
DenklemAl
IzdusumHesapla
ekran.PSet (h, V)

For YY = -3 To 3 Step hh
DenklemAl
IzdusumHesapla

' Ekran Sınırları Kontrol Edilir.
If Not (h > ekran.Width Or V > ekran.Height Or h < 0 Or V < 0) Then
ekran.Line -(h, V), RGB(255, 0, 0)
DoEvents
End If

Next YY
Next XX

For YY = -3 To 3 Step hh
XX = -3

DenklemAl
IzdusumHesapla

ekran.PSet (h, V)

For XX = -3 To 3 Step hh
DenklemAl
IzdusumHesapla

' Ekran Sınırları Kontrol Edilir.
If Not (h > ekran.Width Or V > ekran.Height Or h < 0 Or V < 0) Then
ekran.Line -(h, V), RGB(0, 0, 255)
DoEvents
End If

Next XX
Next YY
End Sub
Sub DenklemAl()
ZZ = Sin(XX) + Cos(YY) ' Buraya abidik gubidik denklemler yazılabilir.
End Sub
Sub IzdusumHesapla()
' X, Y ve Z için yatay ve düşey nokta bulunur.
x = XX * k ' Zoom Değeri Kadar Genişletilir.
y = YY * k
z = ZZ * k

h = x * Cos(pi / 180 * TX) + y * Cos(pi / 180 * TY) + z * Cos(pi / 180 * TZ) + ekran.Width / 2
V = 1 * (0 - x * Sin(pi / 180 * TX)) - y * Sin(pi / 180 * TY) - z * (pi / 180 * TZ) + ekran.Height / 2
End Sub

 
Görüldüğü gibi önce X düzlemleri sonra da Y düzlemleri çizildi ve 3 boyutlu bir grafik oluştu. Kodlardaki DoEvents ifadesini kaldırarak daha hızlı bir sonuç elde edebilirsiniz.
Bu ilk giriş kodlarında zoom ayarları ve çizim hassasiyeti değişkenleri sabit. Bunu programın çalışması sırasında değiştirmek istiyebiliriz. Bu durumda bir ComboBox ile her iki değişken için seçenekler listesi hazırlayabiliriz. Ayrıca çizimde kullanılan renkleri de değiştirebiliriz.
Ekran bakış açıları TX,TY ve TZ için ayrı bir nesne düşündüm: ScrollBar nesnesi. Yatay veya düşey farketmez. Program pencerenizin tasarımına göre istediğinizi seçebilirsiniz. 3 adet kullanmanız gerekir. X,Y ve Z açıları için. Bunların ayarları aşağıdaki gibi olabilir :
 
min = 0 ' Alabileceği En Küçük Değer
max = 359 ' Alabileceği En Büyük Değer
SmallChange = 1 ' Oklara Basılınca Değişim Değeri
LargeChange = 5 ' Çubuğun Boş Alanına Tıklayınca Değişim Değeri
value = 0 ' başlangıç değeridir. Sırasıyla 0 - 30 ve 90 vermenizi öneririm.
 
Ayrıca birer adet label kullanarak scrollbar nesnelerinin değerleri de kullanıcıya gösterilebilir. Hangi açı değerinde olduğumuzu anlamak için :
 
Private Sub scrollX_Change()
label1.caption = scrollX.Value
TX = scrollX.Value
cmdCiz_click
End Sub

 
Bu şekilde 3 adet açı değeri için label ve scrollbar nesnelerini kullanarak çizimin açılarını da değiştirebiliriz.
UYARI : Matematikten hatırlarsanız bazı durumlarda denklemler Tanımsız oluyordu. Mesela payda sıfır olursa falan. Bir denklem yazarken bunu unutursanız tanımsızlık anında program kırılır (break). O noktayı atlatın veya 0.01 gibi bir sayıyla paydayı toplatın. Örn : " 1 / XX " yerine " 1 / (XX + 0.01) " olabilir.
Bu program içerisinde tek yapamadığım şey kullanıcının denklemini işleyebilmek. Kullanıcı değişik tipte denklemler girebilir. Bunu String işlemleri ile ayıklamak oldukça zor olur. Bu konudaki fikirlerinizi iletirseniz sevinirim.
Gökhan UZUN
Örnek Projeyi İndirmek İçin
www27.brinkster.com/ugokhan/programlar/kaynakkod.htm ' anlatımlı :D
 
Umarım bunların içinden en az biri işine yarar selametle.
cannurbey hatta değil   Alıntı Yaparak Yanıtla
Eski 16/04/2008, 14:43   #3 (permalink)
Üye
 
Üyelik Tarihi: 01/2008
Mesaj: 72
Varsayılan

abi eyw.saol ama bu kodlar visual studioda çalışmıo sanırım 6.0 için bu kodlar studioda hata verio genede saol
maniac_lord hatta değil   Alıntı Yaparak Yanıtla
Eski 16/04/2008, 15:06   #4 (permalink)
Silversword
 
Revlis Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2003
Yer: Antalya
Mesaj: 1,395
Varsayılan

vb6 için de olanın adı studio sorularınızda .net için belirtmezseniz herkes en iyi bildiğine göre cevap vercektir.
.net de üzerine grafik çizeceğin kontrolün adından sonra kontrolünadı.creategraphics demen yeterli . yı koyduktan sonra sana çizim araçlarını sunacaktır. Ayrıntılı bilgi için msdn e bakabilirsin
__________________
||||Revlis|||||
Revlis hatta değil   Alıntı Yaparak Yanıtla
Eski 16/04/2008, 15:49   #5 (permalink)
Ceviz Lordu
 
cannurbey Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 12/2006
Yer: İstanbul (Avrupa Yakası)
Mesaj: 127
Varsayılan

Evet hocam 6.0 zaten program da öyle Revlis saolsun yapmış gereken açıklamayı valla ne yapayım çoğu kesim 6.0 kullanıyor. Bu arada revlisin açıklamasından sonra çalıştımı bari??
cannurbey hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Registry işlemleri kokobill C / C++ 1 20/05/2007 16:01
C de dosya işlemleri kejya C / C++ 19 14/05/2007 03:26
C# resim işlemleri ortug C# 1 21/11/2006 14:27
ASP de dosya işlemleri tuncercetinkaya ASP 5 14/02/2006 12:02
mail işlemleri sadroalin ASP 1 17/10/2004 23:54


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 23:43.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net