Yayınlama: Ekim 2019
Güncelleme: 14 Ağustos 2021
Güncelleme: 14 Ağustos 2021
COLOR
Grafik işlemleri yaparken yazı ve zemin rengi belirlemek için kullanılan COLOR
komutu, ekran moduna göre farklı şekillerde kullanılır.
SCREEN 0 : COLOR [renk][,[zeminrengi][,çerçeve]] SCREEN 1 : COLOR [zeminrengi][,palet] SCREEN 7-10 : COLOR [renk][,zeminrengi] SCREEN 10-13 : COLOR [renk]renk: Yazı rengi
zeminrengi: Arkaplan rengi
çerçeve: Monitörün kullanılan alanının dışında kalan alanın rengi. LCD ve LED monitörlerde görülmez. Tüplü manitörler içindir.
Her ekran modunun renk sayısı farklıdır.
Örnekler:
SCREEN 12: 256K renkten aynı anda en fazla 16 renk kullanılabilir.
SCREEN 13: 256K renkten aynı anda en fazla 256 renk kullanılabilir.
SCREEN 0: 0-31 renk. 16-31 arası yanıp sönen renkler.
PALETTE komutu ile renkler değiştirilebilir.
RENK KODLARI:
Renk kodları aşağıdaki tabloda olduğu gibidir.
Sayının;
0. biti mavi,
1. biti yeşil,
2. biti kırmızı renk içindir.
3. bit aktifse
aynı renk parlak(açık renk) olacaktır.
SCREEN 0: CLS COLOR 2 'yeşil PRINT "Merhaba" COLOR 2 + 8 '=10, açık yeşil PRINT "Merhaba" COLOR 2 + 8 + 8 '=20, yanıp sönen yeşil PRINT "Merhaba" COLOR 2 + 8 + 8 + 8 '=26, yanıp sönen açık yeşil PRINT "Merhaba" PRINT COLOR 5 'mor PRINT "Merhaba" COLOR 5 OR &H8 '=13, açık mor(pembe) PRINT "Merhaba" COLOR 5 OR &H10 '=21, yanıp sönen mor PRINT "Merhaba" COLOR 5 OR &H18 '=29, yanıp sönen açık mor(pembe) PRINT "Merhaba"
Daha detaylı bilgi için QuickBasic Yardımda COLOR komutuna bakınız.
CLS
Zemin rengi ile ekranı temizler.
Kullanımı:
Örnek 1:
CLS [{0 | 1 | 2}]
Parametre girilmezse VIEW komutu ile belirtilen grafik ya da
metin alanını siler.
0 : Ekranın metin ve grafiklerini siler
1 : VIEW ile tanımlanan grafik alanı siler.
2 : VIEW ile tanımlanan metin alanı siler.
VIEW komutu için
sonraki sayfaya bakınız.
Örnek 1:
COLOR 14,4 CLS PRINT "Merhaba!"Örnek 2:
SCREEN 0 CLS COLOR 14, 1 FOR n = 1 TO 80 * 24 PRINT "A"; NEXT VIEW PRINT 10 TO 20 COLOR 14, 4 SLEEP CLS SLEEP FOR n = 1 TO 80 * 8 PRINT "B"; NEXT SLEEP CLS 2 SLEEP COLOR 7, 0 CLS 0 PRINT "Bitti !"
SCREEN ile ekran değiştirildiğinde ekran silinmiş olarak gelir.
PALETTE
Bu komut yalnız EGA, VGA ve MCGA ekranlarda kullanılabilir.
Kullanımı:
PALETTE değişecek_renk, renkkoduRenk kodu:
Renk kodu aşağıdaki formül ile hesaplanır.
Örnek 1:
renkkodu = kırmızı + (256 * yeşil) + (65536 * mavi)
mavi, yeşil ve kırmızı için 0-63 arası değer verilir.
Rengin en koyu tonu : 0
Rengin en açık tonu: 63
Rengin en koyu tonu : 0
Rengin en açık tonu: 63
Parametre girilmezse varsayılan palet renkleri ayarlanır.
Örnek 1:
SCREEN 0 CLS COLOR 14 ' Sarı renk PRINT "Merhaba!" SLEEP PALETTE 14, 4 'Sarı renk Kırmızı ile değişti SLEEP PALETTE 0, 2 'Siyah renk Yeşil ile değiştiÖrnek 2:
SCREEN 12 COLOR 7 PRINT STRING$(50, 219) COLOR 12 ' açık kırmızı PRINT STRING$(50, 219) COLOR 7 PRINT STRING$(50, 219) SLEEP FOR n = 63 TO 0 STEP -3 LOCATE 2, 1: PRINT n 'PALETTE 12, 65536 * 0 + 256 * n + 0 PALETTE 12, 256 * n SLEEP 1 NEXTÖrnek 3:
DEFINT A-Z SCREEN 12 kat = 22 FOR renk = 0 TO 15 y = renk * kat + kat LINE (0, y)-(639, y + kat), renk, BF NEXT SLEEP FOR n = 1 TO 8 FOR renk = 15 TO 0 STEP -1 rk = renk * (63 / 15) SELECT CASE n CASE 1: mavi = rk CASE 2: yesil = rk CASE 3: kirmizi = rk CASE 4: mavi = rk: yesil = rk CASE 5: mavi = rk: kirmizi = rk CASE 6: yesil = rk: kirmizi = rk CASE 7: mavi = rk: yesil = rk: kirmizi = rk CASE 8: yesil = rk / 2: kirmizi = rk END SELECT PALETTE renk, 65536 * mavi + 256 * yesil + kirmizi LOCATE 1, 1: PRINT "Mavi", "Yeşil", "Kırmızı" LOCATE 2, 1: PRINT mavi, yesil, kirmizi FOR i = 1 TO 10000: NEXT NEXT SLEEP NEXT
PALETTE USING
Dizi değişkenindeki değerler ile palet renklerini değiştirir.
Kullanımı:
PALETTE USING dizi_değişkeni [(dizi_indeks)]
dizi_indeks: Belirtilirse; belirtilen indeks numarasından itibaren
değerler alınır.
Örnek:
DEFINT A-Z SCREEN 1 FOR i = 0 TO 3 a(i) = i NEXT LINE (130, 30)-(280, 160), 1, BF LINE (20, 10)-(160, 100), 2, BF CIRCLE (160, 110), 50, 3 PAINT STEP(0, 0), 3, 3 DO FOR i = 0 TO 3 a(i) = (a(i) + 1) MOD 16 NEXT PALETTE USING a SLEEP 1 LOOP WHILE INKEY$ = ""
SCREEN
Kullanım 1: Fonksiyon olarak
renkbayrağı : Kullanılmaması veya 0 olması durumunda ASCII kodunu verir. 0 haricinde verilen bir sayı ise satır ve sütundaki karakterin yazı ve zemin rengini içeren bir sayı değeri verir.
x = SCREEN(satır, sütun [, renkbayrağı])Ekranın satır ve sütunundaki karakterin ASCII kodunu veya rengini verir.
renkbayrağı : Kullanılmaması veya 0 olması durumunda ASCII kodunu verir. 0 haricinde verilen bir sayı ise satır ve sütundaki karakterin yazı ve zemin rengini içeren bir sayı değeri verir.
yazı rengi için: x AND 15
zemin rengi için: x \ 16
formülü kullanılır.
Örnek 1:
CLS PRINT "Mesut" FOR n = 1 TO 5 x = SCREEN(1, n) PRINT x; NEXTÇıktı:
Mesut 77 101 115 117 116Örnek 2:
COLOR 14, 4 CLS PRINT "M" ascii = SCREEN(1, 1) 'karakter kodu r = SCREEN(1, 1, 1) 'renk kodu yazirengi = r AND 15 zeminrengi = r \ 16 PRINT "Karakter kodu:"; ascii '77 PRINT "Karakter : "; CHR$(ascii) 'M PRINT "Yazı rengi :"; yazirengi '14 PRINT "Zemin rengi :"; zeminrengi '4Kullanım 2: Ekran modu değiştirme
SCREEN [mod] [,[renkanahtari]][,[calismasayfasi]][,[gosterilensayfa]]
SCREEN komutu, ekran görüntüleme modunu ve program penceresinin
çalışma alanının boyutunu ayarlar.
QuickBasic hem metin hem de grafikleri ekranda görüntüleyebilir.
Grafik komutlarını kullanmak için önce ekran modunu belirlemek gerekir.
QuickBasic hem metin hem de grafikleri ekranda görüntüleyebilir.
Grafik komutlarını kullanmak için önce ekran modunu belirlemek gerekir.
QuickBasic ekrandaki piksellerin rengini kontrol ederek grafikler
oluşturur, ancak ekran çözünürlüğünü de kontrol edebilir. Yüksek
çözünürlüklü(daha çok pikselli) grafikler daha düzgün grafikler
oluştururken, daha düşük çözünürlüklü grafikler (daha az pikselli)
daha hızlı yazılabilir / güncellenebilir.
Ne yazık ki QuickBasic'teki maksimum çözünürlük modu sadece 640x480 ve
sadece 16 rengi destekliyor. En fazla renk 320x200 çözünürlüklü ekran
modunda 256'dır.
Bu modlar, özellikle günümüzün yüksek çözünürlüklü 24 bit renkli grafik modlarıyla karşılaştırıldığında, kısıtlı, ancak bazen şaşırtıcı derecede iyi grafikler oluşturmak için kullanışlıdır.
Bu modlar, özellikle günümüzün yüksek çözünürlüklü 24 bit renkli grafik modlarıyla karşılaştırıldığında, kısıtlı, ancak bazen şaşırtıcı derecede iyi grafikler oluşturmak için kullanışlıdır.
calismasayfasi ve gosterilensayfa sayfalama özelliği
olan ekran modlarında kullanılır.
Örnek:
SCREEN 7 PRINT "Görüntü oluşturulacak" SLEEP FOR n = 7 TO 0 STEP -1 SCREEN 7, , n, 0 'n : çalışma sayfası c = n + 1 CIRCLE (c * 25, 100), c * 20, n + 5 PRINT "Sayfa : "; n NEXT PRINT "Görüntüler hazır. Sırasıyla gösterilecek" SLEEP FOR n = 7 TO 0 STEP -1 SCREEN 7, , , n 'n : gösterme sayfası SLEEP NEXT
Ekran Modları
QuickBasic, her ekran modunun çözünürlük, renkler, ekran sayfaları,
metin boyutu ve daha fazlası gibi özelliklerin bir kombinasyonunu
tanımladığı çeşitli grafik ekran modlarını destekler.
QuickBasic, 0 ile 13 arası sayı ile temsil edilen 14 toplam modu
destekler.
SCREEN 0 varsayılan moddur ve yalnızca metnin görüntülenmesine izin
verir. Grafik komutları çalışmaz.
Diğer tüm 1-13 mod metin ekranını desteklemenin yanı sıra piksel
olarak grafik oluşturmayı da destekler.
Ekran modlarından sadece birkaçı programcılar tarafından yaygın olarak
kullanılmaktadır.
QuickBasic Yardım'da tüm ekran modları hakkında bilgi bulabilirsiniz.
Sık kullanılan ekran modları:
Mod | Çözünürlük | Renk | Sayfa | Metin |
---|---|---|---|---|
0 | 80x25 | 64 renkten 16'sı | 4 | 80x25/43/50 |
7 | 320x200 | 16 | 0-7 | 40x25 |
12 | 640x480 | 256K renkten 16'sı | 1 | 80x60/30 |
13 | 320x200 | 256K renkten 256'sı | 1 | 40x25 |
Düşük çözünürlüğe rağmen geniş renk aralığı sebebiyle mod 13 en çok
kullanılan moddur.
Mod 7 titreşimsiz grafik animasyonu sağlamak için birden fazla sayfa
kullanılabilir.
Yüksek çözünürlük gerektiğinde mod 12 kullanılır.
SCREEN komutuyla seçilen ekran çözünürlüğüne göre ekran üzerinde
fiziksel noktalar(piksel) ayarlanır.
Örneğin SCREEN 12 ile oluşturulan ekranda;
yatayda 640, dikeyde 480 pikseldir.
yatayda 640, dikeyde 480 pikseldir.
0,0 noktası ekranın sol üst köşesidir.
639,479 sağ alt
köşededir.
SCREEN 12 LINE (0, 0)-(639, 479), 14 SLEEP
WINDOW
Ekran modunun çözünürlüğüne göre fiziksel koordinatlar belirlenir.
Window komutu ile ekranın koordinat sistemini kendi isteğimize göre ayarlayabiliriz. Böylece ekran modu değişiminden kaynaklanan görüntü değişikliği oluşmaz.
Window komutu ile ekranın koordinat sistemini kendi isteğimize göre ayarlayabiliriz. Böylece ekran modu değişiminden kaynaklanan görüntü değişikliği oluşmaz.
Kullanımı:
WINDOW [SCREEN] (x1,y1)-(x2,y2)
SCREEN kullanılmazsa 0,0 koordinatı sol alt köşedir.
Kullanılırsa SCREEN komutundaki gibi sol üst köşededir.
(x1,y1) : sol alt köşe
(x2,y2) : sağ üst köşe
x ve y değerleri negatif olabilir. Tam sayı olması şart değildir.
WINDOW (0,0)-(100,100)
Ekran moduna bakılmaksızın ekran yatayda 100, dikeyde 100 birim olduğu
varsayılmıştır.
Artık fiziksel ekranın sol alt köşesi 0,0 sağ üst köşesi 100,100 olarak kabul edilir. Böylece ekranı orantılamak ve konumlandırmak daha kolay olur. Örneğin her ekranda 50,50 konumu ekranın tam orta noktası olur.
Artık fiziksel ekranın sol alt köşesi 0,0 sağ üst köşesi 100,100 olarak kabul edilir. Böylece ekranı orantılamak ve konumlandırmak daha kolay olur. Örneğin her ekranda 50,50 konumu ekranın tam orta noktası olur.
Örnek 1: WINDOW komutuyla ekranın orta noktası 0,0 olarak
ayarlanmıştır.
SCREEN 12 x = 639 / 2 y = 479 / 2 WINDOW (-1 * x, -1 * y)-(x, y) FOR n = 20 TO 480 STEP 20 r = r + 1 CIRCLE (0, 0), n, r NEXT SLEEP
Örnek 2: Aşağıdaki kodları denedikten sonra ekran modunu değiştirin, WINDOW komutunu iptal edip deneyin.
SCREEN 12 WINDOW (0, 0)-(100, 100) LINE (0, 0)-(100, 100), 14, B LINE (0, 0)-(100, 100), 3 LINE (0, 100)-(100, 0), 12 CIRCLE (50, 50), 25 LINE (50 - 10, 50 - 10)-(50 + 10, 50 + 10), 2, B SLEEP
Örnek 3: Sinüs Grafiği
'SINUS GRAPH 'Mesut Akcan. 2020 CLS CONST pi = 3.14159265359# SCREEN 13 WINDOW (0, -1)-(360, 1) FOR i = 0 TO 360 y = SIN(i * pi / 180) PSET (i, y), 14 NEXT SLEEP
Örnek 4: Fraktal 1 (Fractal)
'FRACTAL DEFINT A-Z DIM i AS LONG SCREEN 12 WINDOW SCREEN (0, 0)-(1000, 1000) x = 500 y = 500 RANDOMIZE TIMER FOR i = 1 TO 100000 rs = INT(RND(1) * 3) IF rs = 1 THEN fx = 500 fy = 0 ELSEIF rs = 2 THEN fx = 0 fy = 1000 ELSE fx = 1000 fy = 1000 END IF x = (x + fx) / 2 y = (y + fy) / 2 PSET (x, y), 10 IF INKEY$ <> "" THEN EXIT FOR NEXT
PMAP
Fonksiyon olarak kullanılır. Fiziksel veya WINDOW ile oluşturulan ekran koordinat karşılık değerini verir.Kullanımı:
PMAP (koordinat, fonksiyon)koordinat: Değeri alınacak koordinat noktası.
fonksiyon: 0-3 arası bir değer alabilir.
0 : WINDOW ile tanımlanan ekran koordinatının fiziksel ekrandaki X değeri
1 : WINDOW ile tanımlanan ekran koordinatının fiziksel ekrandaki Y değeri
2 : Fiziksel ekran koordinatının WINDOW ile tanımlanan ekran koordinatınındaki X değeri
3 : Fiziksel ekran koordinatının WINDOW ile tanımlanan ekran koordinatınındaki Y değeri
Örnek:
SCREEN 12 WINDOW SCREEN (0, 0)-(100, 100) x = PMAP(50, 0) '50 : ekranın orta noktası y = PMAP(50, 1) PRINT "Fizisel ekran orta nokta(x,y):"; x; y '319 240 x = PMAP(639, 2) 'ekranın sağ alt köşesi y = PMAP(479, 3) PRINT "Window ile belirlenen ekran sağ alt köşe(x,y):"; x; y '100 100
Önceki Bölüm: 12: Dosya işlemleri-3 | Sonraki Bölüm: 14: Grafik işlemleri-2 |
Hiç yorum yok:
Yorum Gönder