Ders: Picture Windows

L4roXyL

Profesyonel
Katılım
16 Eki 2011
Mesajlar
124
Beğeniler
1
#1
Ders: Picture windows - Resim pencereleri
Tarih: 31 Mayıs 2009 Pazar
Yazan: L4roXyL - (Hasan AYDENİZ)

-

mIRC Help(help.chm) dosyasını silmediğiniz bir mIRC içerisinde, /help picture windows yazdığınız ve enter tuşuna bastığınız zaman bu konu ile yüz yüze geleceksiniz.
Tabi ingilizce olarak. Ve karşınıza çıkan açıklamada sadece komut ve tanım(identifier) kullanımları vardır. Bir çoğumuz bu konuya yabancı olmakla beraber, diğer bir çoğumuzda üzerine pek düşmemektedir.
Aslında bende görünümden uzak kodlar yazan biri olarak, bu konuyu iyi bilmeme rağmen üzerinde pek durmayıp alakalı kodlarda yazmamışımdır.
Ama türkiyede bu konu hakkında yeterli bir bilgi veren ders şuana kadar yok veya yazılmadı sanırım. Neyse uzatmadan konumuza dönelim, gevezeliği ders sonunda yaparım.

-

Picture window komutları ve tanımları(identifiers), ismindende anlaşılabileceği gibi oluşturduğunuz resim penceresi üzerinde düzenlemeler yapmanıza olanak sağlamaktadır.
Ben size ilk başta; "bir (picture)resim penceresi nasıl açılır? ve hangi parametrelerle düzeltilir?" bunları açıklayacağım.
Bunun için custom windows(özel pencereler) komutlarına başvuracağız. Yani bir resim penceresini oluşturmak için, daha doğrusu zaten herhangi bir custom(özel) pencere oluşturmak için; /window komutunu kullanmak zorundasınız-ki- buda custom windows başlığındadır.
Window komutu: /window [-abBcCde[N]fg[N]hHik[N]l[N]mMn[N]oprRsSuvw[N]xz] [-tN,..,N] [+bdeflLmnstx] <@name> [x y [w h]] [/command] [popup.txt] [font [size]] [iconfile [N]] şeklindedir.
-
Karışık gelmiş olabilir ama her bir parametrenin farklı bir işlevi var. Ben size sadece picture window penceresi için gereken parametreleri anlatacağım ve sonra asıl konumuza(picture windows) geri döneceğim.

-

Picture window penceresi açmak için: "-p" parametresini kullanmalısınız.
En basitinden: /window -p @ders şeklindedir.
İnternal(içten) border(kenar)lı bir şekilde pencere açmak için; "-B" parametresini kullanırız.
Bu parametreyi genellikle pencereyi desktop(masaüstü)'da açtığımız zaman kullanırız.
Pencereyi ekranın tam ortasında açmak için; "-C" parametresini kullanırız.
Pencereyi desktopda açmak için; "-d" parametresini kullanırız.
Açılan penceredeki "@" karakterini kaldırmak veya beyan etmek için; "-k[N]" parametresini kullanırız.
[N] yerine gireceğiniz rakam, yapacağınız işlevi temsil eder-ki; -k0 (@ prefixini gizler) / -k1 (@ prefixini gösterir)
NOT: Dikkat ederseniz parametreler zaten aşağı/yukarı yaptığı işlevin baş harfidir.
Örneğin: -p(icture) / -B(order) / -d(esktop) / -C(enter) / -k(eep) vb. şeklindedir.
Yani hepsinin sonunda ortaya çıkacak olan komut şu; /window -Ck0pd @ders
Sanırım buraya kadar anlaşılmayan birşey yok.
Yani sadece picture penceresi açmak için; /window -p @ders yapmanız yeterli olur.
-
Geçelim picture windows komutlarına.
Komutların hepsi; /draw?* şeklindedir. Draw çizmek anlamına gelir.
Örneğin; (Draw to picture - Resim çizmek) gibi.

-

Komutların hepsinde bazı parametreler sabittir.
Bunları en başta açıklamak istiyorum, çünki her birinde tekrar tekrar açıklamanın manası yok.
Sabit parametreler; "-ihnr" parametreleridir.

Açıklamalar:
-i: Inverse mode demektir. Yani çizdiğiniz noktanın arka planı hangi renk ise, çizdiğiniz veri o rengin tersi şeklinde olur.
Örneğin; Siyah bir zemin üzerine "-i" parametresi ile rectangle(dikdörtgen) çizerseniz, çizdiğiniz dikdörtgen beyaz olacaktır.
-r: Bu parametre $rgb(?,?,?) tanımını ile renklendirmenize yarar. Ve çizmiş olacağınız veri, belirlediğiniz $rgb() formatı renginde çıkacaktır.
Açıklama: "$rgb" RED-GREEN-BLUE demektir. Tüm renkler sadece bu 3 rengden oluşmaktadır. $rgb tanımının içerisine gireceğiniz 0'dan 255'e kadar olan rakamlar rengi belirler.
Örneğin; Kırmızı $rgb(255,0,0) eşittir. Yani tanım içerisinde red(kırmızı) değerini 255 verdik, diğer renkleri(yeşil ve mavi) ise "0" değerinde verdik. Dolayısı ile sadece kırmızı olarak dönecektir.
-h: Pencere minimize(simge) durumundayken, pencere ikonunun parlamasına yani highlight ışığının yanmasına yarar.
-n: Bu parametre çizilen veriyi hemen güncelleştirmez. Yani çizim uygulandığında çizilen veri hemen aktif olmaz. Örneğin "n" parametresi kullanarak bir dikdörtgen çizdiğinizde, dikdörtgenin pencerede çizildiğini görmeyeceksinizdir. Ama çizdiğiniz kordinatlar üzerine herhangi bir çizim işlemi uygularsanız, uyguladığınız kordinatlar doğrultusunda dikdörtgen gösterilecektir. Eğer "n" parametresi kullanarak bir veri çizerseniz ve pencereyi pasif konuma sonra tekrar aktif konuma getirirseniz; çizdiğiniz "saklı/güncelleştirilmemiş" veri gösterilecektir/güncelleştirilecektir.
Örnek: //window -aCk0w0dp +let @deneme 0 0 300 300 | drawrect -rfn @deneme 255 2 100 100 50 50
-
Bunlar sabit parametrelerdir.
ÖNEMLİ NOT: "X" NOKTASI, PENCERENİN SOL TARAFINDAN BAŞLAYIP SAĞ TARAFA DOĞRU GİDEN NOKTADIR. PENCERENİN EN SOL KÖŞESİ 0(X) NOKTASIDIR. "Y" NOKTASI İSE, PENCERENİN ÜST TARAFINDAN BAŞLAYIP ALT TARAFA DOĞRU GİDEN NOKTADIR. PENCERENİN EN ÜSTÜ 0(Y) NOKTASIDIR.
Daha iyi anlamak için aşağıdaki resime bakınız.
Resim(200w/200h boyutunda):



-
ÖNEMLİ NOT 2: W(IDTH) GENİŞLİK - H(EIGHT) YÜKSEKLİK DEMEKTİR.

-


PICTURE WINDOW KOMUTLARI

1- /drawdot -ihnr @ <color> <size> <x y> [<x y>...]
Dot kelimesinin manası nokta demektir. Yani bu komut belilediğiniz x-y noktasına, belirlediğiniz büyüklükle nokta çizmenize yarar.

Örnek 1; //drawdot -r @ders $rgb(0,0,255) 50 100 110
Açıklaması: @Ders penceresinde, 100(x) - 110(y) noktasına 50(size) boyutunda mavi bir nokta çizdik.
-
Örnek 2: //drawdot -r @ders $rgb(0,0,255) 20 70 80 160 150
Açıklaması: @Ders penceresinde, 20(size) boyutunda 70(x) - 80(y) ve 160(x) 150(y) noktalarına 2 adet mavi renkli nokta çizdik.
-
Not: <x y> noktalarını birden fazla belirliyebiliriz.
Örneğin: /drawdot -r @ders $rgb(0,0,255) 10(size) 100(1. x) 200(1. y) 50(2. x) 40(2. y) 60(3. x) 80(3. y) gibi.


2- /drawline -ihnr @ <color> <size> <x y> <x y> [<x y>...]
Line kelimesinin manası çizgi demektir. Yani bu komut ile, belirlediğiniz x-y noktalarından yine belirlediğiniz x-y noktalarına belirlediğiniz kalınlıkta çizgi(ler) çizebilirsiniz.

Örnek 1: //drawline -r @ders $rgb(255,0,0) 4 100 100 200 100
Açıklaması: @Ders penceresinde, 4(size) boyutunda 100(x) - 100(y) noktaları ile, 200(x) - 100(y) noktaları arasına kırmızı renkli bir çizgi çizdirdik.
-
Buradaki mantık şudur;
İlk belirlediğiniz "x" noktası ile, ikinci belirlediğiniz "x" noktası çizginin uzunluğunu ifade eder.
Yani ilk "x" noktası 100, ikinci "x" noktası 200 ise eğer, 100 "x" noktasındai 200 "x" noktasına bir çizgi çizeriz. Buda çizgi uzunluğunu 100(width-genişliğinde) yapar. Aynı şey "y" noktaları içinde geçerlidir.


3- /drawrect -ihnrfecd @ <color> <size> <x y w h> [<x y w h>...]
Rect(angle) kelimesinin manası dikdörtgen demektir. Yani bu komut ile, belirlediğiniz x-y noktasından belirlediğiniz w-h genişliği/uzunluğunda dikdörtgen(ler) çizebilirsiniz. Picture windowda en çok kullanılan komutlar arasındadır.

Örnek 1: //drawrect -r @ders $rgb(0,255,0) 4 100 200 40 40
Açıklaması: @Ders pencereside, 4(size) kalınlığında 100(x) - 200(y) noktasından başlayan, 40(w) - 40(h) boyutunda yeşil renkli bir dikdörtgen çizdik.
-
Özel parametreler;
-f: Fill kelimesinden gelir. Türkçe karşılığı doldur demektir. Çizdiğiniz dikdörtgenin içini belirlediğiniz renk ile doldurmaya yarar.
Örnek; //drawrect -rf @ders $rgb(0,255,0) 1 100 100 50 50
Açıklaması: @Ders penceresinde, 1(size) kalınlığında 100(x) - 100(y) noktlarından başlayan 50(w) - 50(h) boyutunda içini doldurarak bir dikdörtgen çizdirdik.

-e: Ellipse kelimesinden gelir. Türkçe karşılığı elips demektir. Çizeceğiniz dikdörtgeni elips şeklinde çizmenize yarar.
Örnek: //drawrect -re @ders $rgb(255,0,0) 2 80 80 100 200
Açıklaması: @Ders penceresinde, 2(size) kalınlığında 80(x) - 80(y) noktalarından başlayan, 100(w) - 200(h) boyutunda elips bir dikdörtgen çizdirdik.

-c: Focus demektir. Türkçe karşılığı odak demektir. Çizeceğiniz dikdörtgeni focus formatında çizer. Daha iyi anlamak için verilen örneği denemeniz yeterli olur.
Örnek: //drawrect -rc @ders $rgb(0,255,0) 3 100 200 100 100
Açıklaması: @Ders penceresinde, 3(size kalınlığında 100(x) - 200(y) noktalarından başlayan, 100(w) - 200(h) boyutunda focus bir dikdörtgen çizdik.

-d: Round demektir. Türkçe karşılığı yuvarlak demektir. Çizeceğiniz dikdörtgeni; belirlediğiniz 2. w-h boyutlarında yuvarlar. Yani kullanım şekli, 2. bir w-h boyutu oluşturulmasından geçmektedir. 2. oluşturduğunuz w-h boyutu, oluşturulan dikdörtgenin kenarlıklarını yuvarlar. Girdiğiniz boyuta göre, tablo şeklinde bir dikdörtgen veya isterseniz tamamen yuvarlak bir dikdörtgen çizebilirsiniz. Aşağıdaki örneğe bakınca daha iyi anlayacaksınız.
Kullanım şekli; /drawrect -d @ <renk> <size> x-y w-h "W-H"
Örnek: //drawrect -rd @ders $rgb(0,255,0) 4 200 200 100 200 10 10
Açıklaması: @Ders penceresinde, 200(x) - 200(y) noktalarından başlayan, 100(w) 200(h) boyutunda, kenarlıkları 10(w) 10(h) boyutunda yuvarlak bir dikdörtgen çizdik.


4- /drawfill -ihnrs @ <color> <color> <x y> [filename] [<x y>...]
Fill kelimesimin manası doldurmak demektir. Yani bu komut ile, belirlediğiniz x-y noktasını herhangi bir renk veya belirlediğiniz .bmp dosyası ile doldurabilirsiniz.

Örnek 1: //drawfill -r @ders $rgb(0,255,0) - 0 0
Açıklaması: @Ders penceresini, 0(x) - 0(y) noktasından itibaren yeşil renkle doldurduk.
-
Örnek 2: //drawfill -r @ders $rgb(0,255,0) 0 100 100 ders.bmp 200 10
Açıklaması: @Ders penceresini, tamamen ders.bmp dosyası ile doldurduk.
-
Not: Bu komutda belirlediğiniz x-y noktalarının doldurma işleminde pek önemi yok. Çünki tamamen belirlediğiniz dosya veya renk ile dolduruyor.


5- /drawtext -hnrpboc @ <color> [color] [fontname fontsize] <x y [w h]> <text>
Text kelimesinin manası metin/yazı demektir. Yani bu komut ile, belirlediğiniz x-y noktasına belirlediğiniz yazıyı yazırabilirsiniz.

Örnek 1: //drawtext -r @ders $rgb(255,0,0) Arial 20 100 20 BU BİR DENEMEDİR
Açıklaması: @Ders penceresinde, 100(x) - 20(y) noktasına arial yazı formatında ve 20(size) büyüklüğünde "BU BİR DENEMEDİR" yazısını kırmızı renkle yazdırdık.
-
Özel parametreler;
-p: Color(renk)/bold(kalın) etc(v.b) kullanabilmenize olanak sağlar. Yani CTRL+B - CTRL+K -CTRL+U kalıplarını kullanabilirsiniz text içerisinde.
Örnek: //drawtext -rp @ders $rgb(255,0,0) Arial 20 100 20 $chr(2) $+ BU BİR DENEMEDİR
Açıklaması: @Ders penceresinde, 100(x) - 20(y) noktasına arial yazı formatında ve 20(size) büyüklüğünde "BU BİR DENEMEDİR" yazısını kırmızı renkle ve kalın yazı formatında($chr(2) = CTRL+B) yazdırdık.

-b: Metinin backgorund rengini belirleyebilmemize olanak sağlar. Yani yazının arka plan rengini "-b" parametresi ile belirleyebilirsiniz.
Örnek: //drawtext -rb @ders $rgb(255,0,0) $rgb(0,255,0) Arial 24 100 50 BU BİR DENEMEDİR YA!
Açıklaması: @Ders penceresinde, 100(x) - 50(y) noktasına arial yazı formatında ve 24(size) büyüklüğünde "BU BİR DENEMEDİR YA!" yazısını arka planı yeşil, yazı rengi kırmızı olarak yazdırdık.

-o: Metini direk kalın(bold) yazdırmanıza yarar.
Örnek: //drawtext -ro @ders $rgb(0,0,255) Tahoma 18 100 100 BU KALIN YAZI DENEMESİDİR
Açıklaması: @Ders penceresinde, 100(x) - 100(y) noktasına tahoma yazı formatında ve 18(size) büyüklüğünde "BU BİR KALIN YAZI DENEMESİDİR" yazısını mavi renkle yazdırdık.

-c: Metini belirlediğiniz w-h noktasına kadar çıkacak bir şekilde yazdırır. Yani yazının width(genişliği) 100 ise ve size "w" boyutunu 70 belirlerseniz, yazıyı 70 (x) genişliğinde yazdırırsınız. Daha iyi anlamak için örneğe bakınız.
Örnek: //drawtext -rc @ders $rgb(0,0,255) Tahoma 20 100 100 50 100 BU BİR DENEMEDİR
Açıklaması: @Ders penceresinde, 100(x) - 100(y) noktasına tahoma yazı formatında 20(size) büyüklüğünde "BU BİR DENEMEDİR" yazısını 50 width(genişliğinde) çıkacak şekilde yazdırdık.


6- /drawsave -bNqN @ <filename>
Save kelimesinin manası kayıt demektir. Yani bu komut, belirlediğiniz resim penceresini belirlediğiniz şekilde/formatda kayıt eder.
-
Parametreler;
-bN: Resimin bit derinliğini belirlemenize yarar. "N" yerine gireceğiniz rakamlar resmin bit derinliğini belirtir ve kayıt eder. Bu rakamlar; 1,4,8,6,24 veya 32 rakamlarıdır.
Örnek: //drawsave -b32 @ders ders.bmp
Açıklaması: @Ders penceresini, 32 bit derinliğinde(en kaliteli) ders.bmp dosyası üzerine kayıt ettik.

qN: Kaliteli/kalitesiz kayıt yapmanıza olanak sağlar. Resimleri jpeg formatında kayıt edebilirsiniz. "N" yerine gireceğiniz rakam resmin kalitesini belirler. Bu rakamlar 1 ile 100 arasında olabilir.
Örnek: //drawsave -q100 @ders ders.jpg
Açıklaması: @Ders penceresini, ders.jpg dosyası üzerine en kaliteli(100) biçimde kayıt ettik.


7- /drawscroll -hn @ <x> <y> <x y w h> [<x> <y> <x y w h>...]
Scroll kelimesinin manası kaydırma demektir. Yani bu komut, ilk belirlediğiniz x-y pozisyonun değeri kadar ikinci belirlediğiniz x-y noktasından belirlediğiniz w-h noktasına kadar olan kısmı kaydırır.

Örnek: /drawscroll @ders 10 0 30 30 85 85
Açıklaması: @Ders penceresinde, 30(x) - 30(y) pozisyonundan 85(w) - 85(h) boyutuna kadar olan kısmı(55), 10 değerinde x pozisyonuna doğru kaydırırız.
Ek açıklama: Belirtilen 2. x-y poziyonundan belirtilen w-h noktasına kadar olan kısım rectangle(dikdörtgen) formatında kaydırılır.


8- /drawcopy -ihmnt @ [color] <x y w h> @ <x y [w h]>
Copy kelimesinin manası kopyalamak demektir. Yani bu komut ile belirtilen penceredeki x-y-w-h pozisyonunu, diğer penceredeki x-y noktasına kopyalarsınız.

Örnek: //drawcopy @ders 0 0 100 100 @ders2 0 0
Açıklaması: @Ders penceresinin, 0(x) - 0(y) noktasından 100(w) - 100(h) boyutuna kadar olan bölümünü, @ders2 penceresinin 0(x) - 0(y) pozisyonuna kopyalıyoruz.
-
Parametreler;
-t: Transparent demektir. Türkçe karşılığı transporan demektir. Yani bu komut ile, belirtilen rengi[color] transporan şekilde diğer pencereye kopyalarız. Diğer pencereye transporan şekilde aktarılır.
Örnek: //drawcopy -t @ders $rgb(255,0,0) 0 0 100 100 @ders2 100 100
Açıklaması: @Ders penceresindeki, 0(x) - 0(y) noktasından, 100(w) - 100(h) boyutundaki veriyi, @ders2 penceresinin 100(x) - 100(y) noktasına kopyalarız. Ve bu kopyalama işleminde, kopyaladığımız verideki kırmızı renk($rgb(255,0,0)) transporan olarak kopyalanır. Yani arka planda ne varsa, kırmızı renkli bölümde arka planı görebiliriz. Kısacası kırmızı renk yerini, arka plandaki renk alır.

-m: Kaliteli/esnek bir şekilde kopyalama işlemi yapar.


9- /drawpic -ihmnotsclgN @ [color] <x y [w h]> [x y w h] [N] <filename>
Pic = picture. Picture kelimesinin manası, resim demektir. Bu komut geniş bir konudur. Belirtilen bir resim dosyasını, pencereye yükleme ve bu yüklemeleri çeşitli şekiller ile yapabilmenize olanak sağlar.
En basitinden: //drawpic @ders 100 100 ders.bmp
Açıklaması: @Ders penceresinin, 100(x) - 100(y) noktasına ders.bmp dosyasını yükleriz.
-
Parametreler;
-t: Yükletilen resimdeki, belirtilen rengi transporan yapar.
Örnek: //drawpic -t @ders $rgb(255,255,255) 200 100 ders.bmp
Açıklaması: @Ders penceresenin, 200(x) - 100(y) pozisyonuna ders.bmp resmini yüklettik. Bu yüklemede, beyaz($rgb(255,255,255)) rengi transporan şekilde olacak biçimde yüklettik. Yani resimki beyaz kısım, yükletildiğinde arka plan rengini alacaktır. Aslında tam olarak renk alacaktır denemez. Yanlış anlaşlabilir. Yani resimdeki beyaz kısım, artık transporandır diyelim. .)

-s: Yükletilen resimin boyutunu yükleme esnasında değiştirerek yükletmenize yarar. Daha doğrusu resmi, belirlediğiniz boyutlarla yükletmenize yarar.
Örnek: //drawpic -s @ders 10 10 120 100 ders.bmp
Açıklaması: @Ders penceresinin, 10(x) - 10(y) pozisyonuna ders.bmp dosyasını 120(w) 100(h) boyutlarında yükletiyoruz.

-l: Yükletilen resmi, mozaik şekilde yükletmenize yarar.
Örnek: //drawpic -l @ders 100 100 ders.bmp
Açıklaması: @Ders penceresinin, 100(x) - 100(y) pozisyonuna ders.bmp dosyasını mozaik şekilde yükletiyoruz.

-m: Resmi kaliteli/esnek bir şekilde yükletmenize yararayan parametredir.
Örnek: //drawpic -m @ders 50 50 ders.bmp

-gN: Icon dosyasını farklı boyutlarda yükletmenize yarar. "N" yerine yazacağınız rakam boyut daha doğrusu icon boyutunu belirlemenize yarar.
-
N yerine gelebilecek rakamlar ve manaları;
0: Iconu küçük boyutta yükletirsiniz.
1: Iconu büyük boyutta yükletirsiniz.
2: Iconu orjinal/gerçek boyutunda yükletirsiniz.
Olarak geçiyor mIRC help bilgisinde lakin denemelerimde, 1'in küçük boyut ve 0'ın büyük boyut olduğunu gördüm. İlginç .)
-
Örnek: //drawpic -g2 @ders 150 100 ders.ico
Açıklaması: @Ders penceresinin, 150(x) - 100(y) pozisyonuna ders.ico dosyasını orjinal(-g2) boyutunda yüklettik.
[x y w h]: Bu kısım ise, resimin belirli bir kısmını kesip yükletmenize olanak sağlar.
Örnek: /drawpic -h @ders 0 0 0 0 150 150 ders.bmp
Açıklaması: @Ders penceresinin, 0(x) - 0(y) pozisyonuna, ders.bmp dosyasının 0(x) - 0(y) pozisyonundan 150(w) - 150(h) boyutuna kadar olan kısmını yükletiriz.


10- /drawrot -hmnbfc @ [color] <angle> [x y w h]
Rot = rotate. Rotate kelimesinin manası, döndürmek demektir. Yani bu komut, belirlediğiniz noktayı veya pencerenin tamamını döndürmenize yarar.
Angle kısmına rakam girmelisiniz. Resim her zaman sağ taraflı dönecektir. Eğer rakam yaparsanız ters taraflı, yani sol tarafa dönecektir.
Örnek: /drawrot @ders 20
Açıklaması: @Ders penceresindeki tüm içeriği/drawları 20 derece sağ tarafa döndürdük.
-
Parametreler;
-b: Background rengini belirlemenize yarar. Yani döndürdüğünüz kısmın arka plan rengini belirlersiniz bu parametreyle.
Örnek: //drawrot -b @ders $rgb(0,0,0) 10
Açıklaması: @Ders penceresindeki tüm içeriği/drawları 10 derece sağ tarafa döndürdük ve arka plan rengini siyah yaptık.

-f: Döndürme işlemini yaparken orjinal boyutunda içeriye doğru döndürür. Yani "-f" parametresini kullanmadan döndürme işlemi yaptığınızda, boyutun büyüdüğünü göreceksiniz. Ama eğer -f kullanırsanız orjinal boyutunda döndürme işlemini gerçekleştirecektir.
Örnek: /drawrot -f @ders 10

-c: Döndürme işlemini resmin tam ortasından baza alarak yapmanıza olanak sağlar. Ve -f parametresi ile kullanırsanız, resmi her döndürdüğünüzde gittikçe küçüldüğünü göreceksiniz.
Örnek 1: /drawrot -c @ders 15
Örnek 2: /drawrot -cf @ders 18

-m: Resmi kalitesini koru*****/esnek döndürmenize yarar. Ama bu sözde tabi, kalite her zaman bozulur.
[x y w h]: Bu kısım pencerede sadece belirttiğiniz kısmı döndürmenize yarar.
Örnek: //drawrot -b @ders $rgb(0,0,0) 60 100 100 140 120
Açıklaması: @Ders penceresinin, 100(x) - 100(y) pozisyonundan 140(w) - 120(h) genişliğine kadar olan kısmını 60 derece döndürdük. Ve dönen kısmın arka plan rengini(-b) siyah yaptık.


11- /drawreplace -nr @ <color1> <color2> [x y w h]
Replace kelimesinin manası, yenilemek/değiştirmek demektir. Yani bu komut ile penceredeki belirlediğiniz rengi, yeni belirlediğiniz renkle değiştirebilirsiniz.

Örnek: /drawreplace -r @ders $rgb(0,0,0) $rgb(255,0,0)
Açıklaması: @Ders penceresindeki, tüm siyah($rgb(0,0,0)) renkleri, kırmızı($rgb(255,0,0)) olarak değiştirdik.
[x y w h]: Bu kısım belirtilirse, sadece belirttiğimiz kısımda bu işlem uygulanır.

Örnek: /drawreplace -r @ders $rgb(255,0,0) $rgb(0,0,0) 200 200 500 500
Açıklaması: @Ders penceresindeki, 200(x) - 200(y) pozisyonundan 500(w) - 500(h) boyutuna kadar olan kısımda tüm kırmızı renkler, siyah olarak değiştirildi.

-

Picture window komutları burada sona ermiştir.
Ama dersimiz devam ediyor, çünki bir bu kadar hatta dahada fazlası identifier(tanım)ımız mevcut.

-

PICTURE WINDOW TANIMLARI

1- $mouse - prop: win, x, y, mx, my, dx, dy, key, lb
Mouse bildiğiniz üzere fare oluyor.
Yani bu identifier ile picture window üzerinde bazı bilgileri alabilirsiniz.
-
Bilgiler;
$mouse.x: Farenin pencere üzerindeki "x" pozisyonunun değerini verir.
$mouse.y: Farenin pencere üzerindeki "y" pozisyonunun değerini verir.
$mouse.mx: Farenin mIRC ana penceresindeki "x" pozisyonunun değerini verir.
$mouse.my: Farenin mIRC ana penceresindeki "y" pozisyonunun değerini verir.
$mouse.dx: Farenin desktop(masaüstü) üzerindeki "x" pozisyonunun değerini verir.
$mouse.dy: Farenin desktop(masaüstü) üzerindeki "y" pozisyonunun değerini verir.
$mouse.lb: Fare konumunun listbox(liste kutusunda) olup olmadığının bilgisini verir.
-
$mouse.key: İşleme göre belirli rakamlar verir. Her rakamın farklı bir manası vardır.
-
Bu rakamlar;
1: Farenin sol tuşunun basılı olduğunu ifade eder.
2: Control(CTRL) tuşuna basılı olduğunu ifade eder.
3: Control(CTRL) ve sol tuşa basılı olduğunu ifade eder.
4: SHIFT tuşuna basılı olduğunu ifade eder.
5: SHIFT ve sol tuşa basılı olduğunu ifade eder.
8: ALT tuşuna basılı olduğunu ifade eder.
9: ALT ve sol tuşa basılı olduğunu ifade eder.
-
16: Farenin sağ tuşuna basılı olduğunu ifade eder.
18: Control(CTRL) ve sağ tuşa basılı olduğunu ifade eder.
20: SHIFT ve sağ tuşa basılı olduğunu ifade eder.
24: ALT ve sağ tuşa basılı olduğunu ifade eder.
-
$MOUSE.key tanımında, bitwise operatoru kullanılır.
Bitwise operatoru: &
Örneğin; /if ($mouse.key & 1) { echo -: SOL tuş basılı. }


2- $click(@,N) - prop: x y
Bu tanım(identifier) pencerede tıklanılan(sol tuş) yerlerin bilgisini verir.

Örnek: //echo -: $click(@ders,0)
Açıklama: @Ders penceresindeki toplam tıklanılan pozisyon sayısını verir.
-
Örnek: //echo -: $click(@ders,1)
Açıklama: @Ders penceresindeki tıklanılan ilk pozisyonun "x-y" değerini verir.
-
Örnek: //echo -: $click(@ders,2).x
Açıklama: @Ders penceresindeki tıklanılan 2. pozisyonun "x" değerini verir.

Not: /clear -c @ders yaparsanız, hafızaya alınan bu verilerin hepsini silersiniz.


3- $inellipse(x,y,x,y,w,h)
Bu tanım, belirtilen kordinatların tamamı pencere içerisinde belirtilen elips ile eşleşiyorsa $true olarak dönecektir.
Eğer eşleşmiyorsa $false olarak dönecektir.


4- $inrect(x,y,x,y,w,h)
Bu tanım, belirtilen kordinatların tamamı pencere içerisinde belirtilen rectangle(dikdörtgen) ile eşleşiyorsa $true olarak dönecektir.
Eğer eşleşmiyorsa $false olarak dönecektir.


5- $inroundrect(x,y,x,y,w,h,w,h)
Bu tanım, belirtilen kordinatların tamamı pencere içerisinde belirtilen round-rectangle(yuvarlak dikdörtgen) ile eşleşiyorsa $true olarak dönecektir.
Eğer eşleşmiyorsa $false olarak dönecektir.


6- $inpoly(x,y,a1,a2,b1,b2,...)
Eğer $true olarak dönerse, x-y pozisyonları çok-gen içerisindedir.
Eğer $false olarak dönerse, değildir.


7- $onpoly(n1,n2,x,y,x,y,...)
Eğer $true olarak dönerse 2 çok-gen üst üste binmiş demektir.
Eğer $false olarak dönerse, değildir.

-
ÖRNEK: $inellipse(x,y,x,y,w,h) - $inrect(x,y,x,y,w,h) - $inroundrect(x,y,x,y,w,h,w,h) - $inpoly(x,y,a1,a2,b1,b2,...) - $onpoly(n1,n2,x,y,x,y,...)
Bu 5 tanımı daha iyi anlamanız için hepsini kapsayan bir örnek yazdım.
Örneği görüntülemek için: /deneme yazınız.
Not: Pencere içerisindeki cisimlerin içerisine tıklayınız.
Açıklama: $inellipse - $inroundrect ve $inrect tanımlarının mantığı gayet basittir.
İlk "x,y" noktalarını "$mouse.x,$mouse.y" olarak gireceksiniz. Geri kalan "x,y,w,h,[w,h]" kısımlarına ise belirlediğiniz(pencereye çizdiğiniz) verinin aynı kordinatlarını gireceksiniz.
Sanırım anlaşılmayan birşey yok.

Kod:
alias deneme {
  window -aCk0w0dp +let @deneme 0 0 250 250
  drawfill -r @ok 0 0 0 0 | drawrect -re @ok 255 2 10 10 100 100 
  drawrect -r @ok 255 2 120 10 100 100 | drawrect -rd @ok 255 2 10 120 100 100 45 45
}
menu @deneme {
  sclick: {
    if ($inellipse($mouse.x,$mouse.y,10,10,100,100)) echo -: Tıklanılan nokta elips içerisinde.
    if ($inrect($mouse.x,$mouse.y,120,10,100,100)) echo -: Tıklanılan nokta rectangle/dikdörtgen içerisinde.
    if ($inroundrect($mouse.x,$mouse.y,10,120,100,100,45,45)) echo -:   Tıklanılan nokta round-rectangle/yuvarlak-dikdörtgen içerisinde.
  }
}
-

8- $rgb(N,N,N)
Bu tanım, N yerine belirtilen rakamların(0-255 arasında) renk değerini verir.
Yukarıdada açıkladığım gibi, RED-GREEN-BLUE demektir.

Örnek: //echo -: $!rgb(0,255,0) renk değeri: $rgb(0,255,0)
Örnek: //echo -: $!rgb(16711680) rgb formatı: 0,0,255


9- $getdot(@,x,y)
Bu tanım, belirtilen x-y noktasının renk değerini verir.

Örnek: //echo -: $getdot(@ders,10,10)
Açıklama: @Ders penceresinin, 10(x) - 10(y) noktasındaki renk değerini alırız.


10- $height(text,font,size)
Bu tanım, belirtilen metin-font-boyut üçlüsünün yükseklik değerini verir.
Örnek: //echo -: $!height(DENEME,Arial,18) yükseklik değeri: $height(DENEME,Arial,18)


11- $pic(filename) - prop: size, width, height
Bu tanım, belirtilen resim dosyalarının(jpg, png, bmp) hakkında bilgiler verir.

Bu bilgiler;
Örnek: //echo -: $!pic(ders.bmp) ders.bmp size(büyüklüğü): $pic(ders.bmp) $+ byte - KB: $bytes($pic(ders.bmp),k) $+ kb
Açıklama: Tek başına kullanıldığında(yukarıdaki gibi) resmin büyüklüğünü verir. $pic(ders.bmp).size ile aynı işlevi görür.
Width: Resmin genişlik değerini verir.
Örnek: //echo -: $!pic(ders.bmp).width ders.bmp width(genişliği): $pic(ders.bmp).width
Height: Resmin yükseklik değerini verir.
Örnek: //echo -: $!pic(ders.bmp).height ders.bmp height(yükseklik): $pic(ders.bmp).height


12- $width(text,font,size,B,C)
Bu tanım, belirtilen metin-font-boyut üçlüsünün genişlik değerini verir.

Örnek: //echo -: $!width(DENEMEDİR,Tahoma,20) değeri: $width(DENEMEDİR,Tahoma,20)
B yerine, 0 haricinde bir rakam girilirse eğer(1 gibi) metinin bold(kalın) yazı olarak değerini verir.
C yerine, 0 haricinde bir rakam girilirse eğer(1 gibi) metinin control code(renk,altı çizgili vb.) yazı olarak değerini verir.

-

MENU OLAYLARI(EVENTS)

Pencerenin belirli işlemlerini menu içerisinde yapmak zorundayız.
Bu işlemler, mesela; sol tıkladığımızda gerçekleştilecek bir işlem olabilir vs.
Her işlemin farklı bir event(olay) başlığı vardır.

Şöyleki;
Sclick: LEFT(sol) click(tıklama) demektir.
Dclick: Çift left(sol) click(tıklama) demektir.
Uclick: Mouse(fareyi) sol tıkladığımızda serbest bırakmak demektir.
Rclick: RIGHT(sağ) click(tıklama) demektir.
Lbclick: Listbox(liste kutusu)da seçilen satır değeri demektir.
Leave: Mouse-n pencereden çıkış yapıldığında demektir.
Drop: Sol tıklama bırakıldığında demektir.
-
Menu içerisinde kullanılan identifierlar(tanımlar);
$leftwin: Leave olayında kullanılır, çıkış yapılan pencerenin ismini verir.
$leftwinwid: Yine leave olayında kullanılır, çıkış yapılan pencerenin window id numarasını verir.
$active: Her olayda kullanılabilir. Pencere ismini verir.

-

Komutlar, identifier(tanımlar) ve menu bilgileri sona ermiştir.
Picture window, bu görmüş olduğunuz bilgilerden ibarettir. Ama şunu samimiyetimle söylemek istiyorum, hayal gücü ve yeteneği olan her kimse picture window ile sınırsız şeyler yapabilir. Bir mp3 çalardan tutun, dialoglarla yapılan her işlev ve/ya fazlası. Hepsi sizin hayal gücünüze kalmış. Tabi bilgi ve profesyonellikde gereklidir.

-

Neyse birkaç örnek vermek istiyorum sizlere. Örnekler konuları anlamamızda daha çok yardımcı oluyor her zaman için.

-

Örnek 1:
En çok sorulan sorulardan bir tanesi. Renk geçişi nasıl yapılır?
Örneğin; Pencerenin tamamını kapsayan, siyahdan kırmızıya doğru geçiş için bir kod yazalım.
Mantığı basittir. Siyah rengin rgb değeri: $rgb(0,0,0) - 0
Kırmızı rengin rgb değeri: $rgb(255,0,0) - 255
Yani red(kırmızı) kısmı 0'dan 255'e kadar yükselirse, siyah renkten kırmızı renge doğru geçiş yapacaktır.
Kısacası aşağıdaki koda bakınız.

Kod:
alias deneme {
  ;alias ismi /deneme
  var %w = @deneme,%1 = 1,%rgb
  ;3 değişken oluşturuyoruz; %w değişkenine pencereyi, %1 değişkenine 1   değerini ve %rgb değişkenine $lisanssız(boş) değerini atıyoruz.
  window -aCpdBHw0k0 %w 0 0 255 255
  ;penceremizi -a(aktif)C(ortada)d(masaüstünde)B(internal   kenar)w0(switchbarda gizliyoruz)k0(@ prefixini gizliyoruz) şeklinde   255(w) - 255(h) boyutunda açıyoruz.
  while (%1 <= 255) {
    ;while oluşturuyoruz ve %1 değişkeni 255i bulana kadar döngüyü devam ettiriyoruz.
    %rgb = $rgb(%1,0,0) 
    ;boş değer atadığımız %rgb değerine siyahdan kırmızıya doğru geçiş yapan(1den 255e doğru yükselen) $rgb değerini atıyoruz. 
    drawline -r %w %rgb 1 0 %1 255 %1
    ;drawline komutu ile 1 size boyutunda, 0(x) %1(y-255e kadar   yükselir) 255(w) %1(h-255e kadar yükselir) pozisyonlarına line(çizgi)   çiziyoruz.
    inc %1
    ;gayet basit ,)
  } 
}
-

Örnek 2:
Mesela efektli bir tarzda açılan pencere oluşturalım.
Pencere boyutu örneğin; 400(w) - 500(h) olsun.

Kod:
alias deneme2 {
  ;alias ismi /deneme2
  var %1 = 1 | window -Chk0HBw0dp @deneme2 0 0 400 500
  ;%1 değişkenine 1 değer atıyoruz ve penceremizi hide(gizli) olarak açıyoruz.
  drawfill -r @deneme2 0 0 0 0
  ;/drawfill ile pencerenin içini siyah renkle dolduruyoruz. 
  while (%1 <= 500) {
    ;while ile penceremizi 0(w) - 0(h) boyutundan, 400(w) - 500(h) boyutuna kadar büyütüyoruz(orjinal boyutu yani)
    window -a @deneme2 -1 -1 $calc(%1 /1.25) %1
    inc %1
  }
}
-

Örnek 3:
Titlesiz(+s veya +d ile açılan) pencereleri taşıyabilme.
Bazı arkadaşlar bu işlem için dll vb. dosyalar yazıyorlar. Lakin buna gerek olduğunu zannetmiyorum.

Kod:
alias deneme3 {
  window -aCk0Bw0dp +d @deneme3 0 0 255 255
  ;pebceremizi 255(w) - 255(h) ebatlarında açıyoruz.
  var %1 = 1 | while (%1 <= 255) { 
    drawrect -r @deneme3 $rgb(0,0,%1) 1 0 20 %1 %1 
    ;while ile siyahdan maviye geçiş yapacak şekilde içini dolduruyoruz.
    inc %1 
  }
  drawrect -r @deneme3 0 2 0 0 255 255
  ;sonra penceremize 2(size) kalınlığında bir çerçeve çiziyoruz.
  drawrect -rf @deneme3 0 2 0 0 255 22
  ;pencerenin 0(x) - 0(y) pozisyonundan, 255(w) - 22(h) noktasına içi dolu(-f) bir dikdörtgen çiziyoruz.
  drawtext -ro @deneme3 $rgb(255,255,255) Arial 12 5 4 TITLE(BAŞLIK) .)
  ;drawtext komutu ile 5(x) - 4(y) pozisyonuna "TITLE(BAŞLIK) .)" yazısını yazıdırıyoruz.
}
;
;Yukarıdaki kod önemli değil. Sadece pencere oluşturup birkaç süsleme yapıyoruz. Önemli olan aşağıdaki koddur.
;Yani pencereyi taşıyabilmemize olanak sağlayacak olan [B]/movee[/B] aliasıdır.
;
alias -l movee { 
  ;alias ismi movee - /movee şeklinde kullanılamaz(-l)
  var %dx = $calc($mouse.dx -$2),%dy = $calc($mouse.dy -$3)
  ;%dx değişkenine farenin masaüstündeki "x" pozisyonundan $2(aşağıda belirteceğim) verisini çıkarttıp, kaydediyoruz.
  ;%dy değişkenine de farenin masaüstündeki "y" pozisyonundan $3(aşağıda belirteceğim) verisini çıkarttıp, kaydediyoruz.
  $iif($window($1),window $v1 %dx %dy) 
  ;burada diyoruzki eğer belirlediğimiz pencere($1) açıksa, pencereyi %dx %dy pozisyonuna taşı.
  $iif($mouse.key & 1,.timer -m 1 0 movee $1-) 
  ;VE EN ÖNEMLİSİ: burada diyoruzki eğer mouse.key 1 ise, yani sol tıklanmış ise 0 saniyede bir movee aliasını uygula.
  ;Yani bunun amacı, mouse.key sol tuşuna basılı olduğunu sürece movee aliasını devamlı uygula. 
  ;Karışık gelebilir ama, movee aliası devamlı uygulandığında; tüm   işlevleri baştan yapacaktır ve pencerenizi belirlediğiniz noktaya   sürükleyecektir. 
}
;
;Tabi sadece movee aliası ile olacak birşey değil bu. Aliası menu içerisinde sclick olayında etkin kılacağız.
;
menu @deneme3 {
  ;menu @deneme3
  sclick: {
    ;sclick(sol click-tıklama)
    if ($mouse.x isnum 1-255 && $mouse.y isnum 1-22) {
      ;eğer mouse.x 1 ile 255 arasında bir noktada ise ve(&&) mouse.y de 1 ile 22 arasındaki bir pozisyonda ise;
      movee $menu $calc($mouse.dx - $window($menu).x) $calc($mouse.dy - $window($menu).y) 
      ;move aliasını uygula.
      ;aliasdaki $1(1. kelime)ye $menu(pencere ismi) ata.
      ;aliasdaki $2(2.kelime)ye $mouse.dx den pencerenin(@deneme3) x pozisyonunu çıkar ve ata.
      ;aliasdaki $3(3.kelime)ye $mouse.dy den pencerenin(@deneme3) y pozisyonunu çıkar ve ata.
    }
  }
}
Karmaşık gelebilir, lakin dersi baştan sona kadar okuduysan gayet basit birşey olduğunu anlayacaksın.
Yani bu tarz birşey için(titlesiz pencereyi taşımak için) dll vb. şeyler yazmaya gerek yok.
Mantığını kullanabilen herkez bunu yapabilir. mIRC bunun için bize olanak sağlıyor yani.

-

Dersimiz burada sona ermiştir.
-
Picture window, en sondada dediğim gibi tamamen hayal gücünüze bağlı olan bir konudur.
Hayal gücünüz ne kadar genişse, bir o kadarda farklı ve değişik kodlar vs. yazabilirsiniz.
MP3 player, oyun(lar), dialog tarzı pencereler vs vs. Hatta zorlarsanız ve hayal gücünüzü kullanırsanız bir INTRO bile yazabilirsiniz. .)
Kolay gelsin.
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 0)

Üst