HTML clipboard
Makale serisinin 4.bölümüne hoşgeldiniz.
Şimdi
de işin en heyecanlı kısmına gelelim: Game1.cs
Bu
işlemleri Adım Adım anlatmaya özen göstereceğim...
GAME1.CS
İlk iş olarak System.Windows.Forms’u projemize dahil ediyoruz.
using System.Windows.Forms;
Özellikler ve ToolBox ın instance larını oluşturuyoruz:
Ozellikler ozel = new
Ozellikler();
Toolbox tool = new Toolbox();
Game1 yapıcı fonksiyonumuzda:
graphics.PreferredBackBufferWidth
= 600;
graphics.PreferredBackBufferHeight
= 600;
şeklinde bir değer atama
yapıyoruz.Burada Game1 nesnemize ait Width ve Height değerlerini verdik.
Yine aynı bölümde,
Window.Title = "Basit GUI Editör";
this.IsMouseVisible
= true;
şeklinde kodlamaları da ekliyoruz.1.kod Pencereye “Basit GUI Editör” yazarken
diğeri Mouse un her halükarda görüntülenmesi gerektiğini belirtiyor.Bu tarz
uygulamalarda Mouse İmleci sürekli görüntülenmelidir,öyle değil mi?
Yine aynı kısımda,
Control.FromHandle(Window.Handle).Location
= new System.Drawing.Point(337,
86);
ozel.Show();
ozel.DesktopLocation = new System.Drawing.Point(949,
109);
tool.Show();
tool.DesktopLocation = new System.Drawing.Point(141,
109);
form nesnelerimizin pencere
ilk açıldığından masaüstünde nerelerde duracaklarını belirtiyor.Aynı zamanda
ilgili GameWindow nesnemizinde nerede açılacağına ilişkin X ve Y
koordinatlarını veriyoruz.Bu değerler hesaplanarak verilmiştir.
Sonraki işlemlerimiz değişken tanımlamaları olacaktır.
Timer zaman = new Timer();
int eskideger;
Infos bilgiler =
new Infos();
Zaman isimli bir Timer
kontrolü oluşturuyoruz.Kontrolleri yüklerken ve Drag işlemi yaparken çok
işimize yarayacak.
Bilgiler adında bir Infos classının instance ını oluşturuyoruz.
Game1() Yapıcı
fonksiyonumuzda;
zaman.Enabled = true;
zaman adlı timer nesnemizi
enabled yaparak başlatıyoruz.
Initialize()
fonksiyonumuzda;
//Timer Nesnesi
zaman.Interval = 1;
zaman.Tick += new EventHandler(zaman_Tick);
diyerek Timer nesnemizin
Tick olayını oluşturuyoruz ve Interval yani döngü süresini 1 olarak veriyoruz.
Zaman_Tick eventine
aşağıdaki gibi bir kod yazıyoruz.
private void zaman_Tick(object
sender, EventArgs e)
{
//XBUTTON
Ekleme
if
(Infos.degerpub == true)
{
if
(Infos.kapat == true)
{
}
else
if (Infos.kapat
== false)
{
XButton
btn = new XButton();
btn.Name = "button" + Infos.a;
btn.Text = "button" + Infos.a;
btn.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(btn);
Infos.strunq.Add(btn);
Infos.kapat
= true;
}
}
//XCHECKBOX
Ekleme
if
(Infos.c_degerpub == true)
{
if
(Infos.c_kapat == true)
{
}
else
{
XCheckBox
chk = new XCheckBox();
chk.Name = "checkbox" + Infos.c;
chk.Text = "checkbox" + Infos.c;
chk.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(chk);
Infos.strunq.Add(chk);
Infos.c_kapat
= true;
}
}
//XCOMBOBOX
Ekleme
if
(Infos.co_degerpub == true)
{
if
(Infos.co_kapat == true)
{
}
else
{
XComboBox
cbo = new XComboBox();
cbo.Name = "ComboBox" + Infos.co;
cbo.Text = "ComboBox" + Infos.co;
cbo.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(cbo);
Infos.strunq.Add(cbo);
Infos.co_kapat
= true;
}
}
//XLABEL
Ekleme
if
(Infos.l_degerpub == true)
{
if
(Infos.l_kapat == true)
{
}
else
{
XLabel
lbl = new XLabel();
lbl.Name = "Label" + Infos.l;
lbl.Text = "Label" + Infos.l;
lbl.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(lbl);
Infos.strunq.Add(lbl);
Infos.l_kapat
= true;
}
}
//XListBox
Ekleme
if
(Infos.lbx_degerpub == true)
{
if
(Infos.lbx_kapat == true)
{
}
else
{
XListBox
list1 = new XListBox();
list1.Name = "Listbox" + Infos.lbx;
list1.Text = "Listbox" + Infos.lbx;
list1.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(list1);
Infos.strunq.Add(list1);
Infos.lbx_kapat
= true;
}
}
//XPictureBox
Ekleme
if
(Infos.pic_degerpub == true)
{
if
(Infos.pic_kapat == true)
{
}
else
{
XPictureBox
picx = new XPictureBox();
picx.Name = "Picturebox" + Infos.pic;
picx.Text = "Picturebox" + Infos.pic;
picx.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(picx);
Infos.strunq.Add(picx);
Infos.pic_kapat
= true;
}
}
//XProgressBar
Ekleme
if
(Infos.pro_degerpub == true)
{
if
(Infos.pro_kapat == true)
{
}
else
{
XProgressBar
prox = new XProgressBar();
prox.Name = "ProgressBar" + Infos.pro;
prox.Text = "ProgressBar" + Infos.pro;
prox.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(prox);
Infos.strunq.Add(prox);
Infos.pro_kapat
= true;
}
}
//XRadioButton
Ekleme
if
(Infos.rad_degerpub == true)
{
if
(Infos.rad_kapat == true)
{
}
else
{
XRadioButton
radio = new XRadioButton();
radio.Name = "RadioButton" + Infos.rad;
radio.Text = "RadioButton" + Infos.rad;
radio.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(radio);
Infos.strunq.Add(radio);
Infos.rad_kapat
= true;
}
}
//XTextbox
Ekleme
if
(Infos.txt_degerpub == true)
{
if
(Infos.txt_kapat == true)
{
}
else
{
XTextBox
txt1 = new XTextBox();
txt1.Name = "Textbox" + Infos.txt;
txt1.Text = "Textbox" + Infos.txt;
txt1.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(txt1);
Infos.strunq.Add(txt1);
Infos.txt_kapat
= true;
}
}
foreach
(Control v in
Control.FromHandle(Window.Handle).Controls)
{
Infos.kontroller.Add(v);
if
(v.Focused)
{
Infos.secilikontrol
= v;
Infos.kontrool
= v;
}
}
if
(Infos.xmlolustur == true)
{
Infos.XMLOlustur();
Infos.xmlolustur
= false;
}
else
{
}
}
Textbox yüklemesi bitene
kadar olan kısım ilgili kontrolleri yüklemeyle alakalı kısımlardır.Üzerinde
biraz duralım:
Örnek olarak TextBox
yüklemeyi konuşalım:
if (Infos.txt_degerpub == true)
{
if
(Infos.txt_kapat == true)
{
}
else
{
XTextBox
txt1 = new XTextBox();
txt1.Name = "Textbox" + Infos.txt;
txt1.Text = "Textbox" + Infos.txt;
txt1.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(txt1);
Infos.strunq.Add(txt1);
Infos.txt_kapat
= true;
}
}
Infos daki
TextBox_Yuklendi olayının sonucu eğer doğruysa ve timer nesnesini bu esnada
txt_kapat ile durdurmuyorsak Textbox nesnemizi klasik yöntem ile
oluşturuyor,GameWindow a ekliyor,bunun yanısıra Benzersiz Kontrol Listesi
değişkenimiz strunq e ekliyoruz.Ardından da bu işlemi bir kere yapmasını
istediğimiz için txt_kapat diyoruz.Aksi takdirde,strunq listemize aynı
kontrollerden defalarca kere eklendiğini görecektik ve belki de Benzersiz sonuç
alamayacaktık.
TextBox yüklemesi
bittikten sonraki kısım hakkında biraz konuşalım:
foreach (Control v in Control.FromHandle(Window.Handle).Controls)
{
Infos.kontroller.Add(v);
if
(v.Focused)
{
Infos.secilikontrol
= v;
Infos.kontrool
= v;
}
}
if (Infos.xmlolustur == true)
{
Infos.XMLOlustur();
Infos.xmlolustur
= false;
}
else
{
}
Öncelikle o anda GameWindow üzerinde bulunan tüm kontrolleri sorguluyor,bunları
tekrar eden kontrol listemiz “kontroller” a aktarıyor,ve eğer ilgili kontrol
seçiliyse bunu secilikontrol ve kontrool e aktarıp Özellikler Formunun
ihtiyacını karşılamış oluyoruz.
Ardından,eğer Özellikler formunda “Kaydet” tuşuna basıldıysa,XMLOlustur() adlı
fonksiyonumuzu çalıştırıyor ve tekrardan buna false değer atıyoruz.
C# bir case-sensitive
yani Harf Duyarlı Dil olduğundan ötürü XMLOlustur() fonksiyonu ile xmlolustur
bool değişkenini karıştırmamanız önemle rica olunur.
Bu işlemlerin dışında
Game1() Yapıcı fonksiyonumuza gelip:
Control.FromHandle(Window.Handle).Move += new
EventHandler(XNAWindowsTasima);
Gibi bir olay
tanımlayalım.Bu olayın yaptığı işlem GameWindow un taşınmasını engellemektir.Bunun
sebebi ise diğer 2 formumuz ile Tasarımsal açıdan uyumsuzluk yaşanmasını
engellemektir.
public void XNAWindowsTasima(object
sender, EventArgs e)
{
Control.FromHandle(Window.Handle).Location
= new System.Drawing.Point(337,
86);
}
Şeklinde Game1.cs in
herhangi bir yerinde bu fonksiyonu yerleştirdiğimizde artık GameWindow hiçbir
şekilde taşınamayacaktır
J
Game1.cs in tüm kodları:
using System;
using
System.Collections.Generic;
using
System.Linq;
using
Microsoft.Xna.Framework;
using
Microsoft.Xna.Framework.Audio;
using
Microsoft.Xna.Framework.Content;
using
Microsoft.Xna.Framework.GamerServices;
using
Microsoft.Xna.Framework.Graphics;
using
Microsoft.Xna.Framework.Input;
using
Microsoft.Xna.Framework.Media;
using
Microsoft.Xna.Framework.Net;
using
Microsoft.Xna.Framework.Storage;
using
System.Windows.Forms;
namespace GUIEditor
{
public class Game1 :
Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager
graphics;
SpriteBatch
spriteBatch;
Ozellikler
ozel = new Ozellikler();
Toolbox
tool = new Toolbox();
Timer
zaman = new Timer();
int
eskideger;
Infos
bilgiler = new Infos();
public
Game1()
{
graphics = new
GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
graphics.PreferredBackBufferWidth =
600;
graphics.PreferredBackBufferHeight
= 600;
Control.FromHandle(Window.Handle).Move
+= new EventHandler(XNAWindowsTasima);
Window.Title = "Basit GUI Editör";
this.IsMouseVisible
= true;
zaman.Enabled = true;
Control.FromHandle(Window.Handle).Location
= new System.Drawing.Point(337,
86);
ozel.Show();
ozel.DesktopLocation = new System.Drawing.Point(949,
109);
tool.Show();
tool.DesktopLocation = new System.Drawing.Point(141,
109);
}
public void XNAWindowsTasima(object
sender, EventArgs e)
{
Control.FromHandle(Window.Handle).Location
= new System.Drawing.Point(337,
86);
}
protected
override void
Initialize()
{
base.Initialize();
//Timer
Nesnesi
zaman.Interval = 1;
zaman.Tick += new EventHandler(zaman_Tick);
}
protected
override void
LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
}
private
void zaman_Tick(object
sender, EventArgs e)
{
//XBUTTON
Ekleme
if
(Infos.degerpub == true)
{
if
(Infos.kapat == true)
{
}
else
if (Infos.kapat
== false)
{
XButton
btn = new XButton();
btn.Name = "button" + Infos.a;
btn.Text = "button" + Infos.a;
btn.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(btn);
Infos.strunq.Add(btn);
Infos.kapat
= true;
}
}
//XCHECKBOX
Ekleme
if
(Infos.c_degerpub == true)
{
if
(Infos.c_kapat == true)
{
}
else
{
XCheckBox
chk = new XCheckBox();
chk.Name = "checkbox" + Infos.c;
chk.Text = "checkbox" + Infos.c;
chk.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(chk);
Infos.strunq.Add(chk);
Infos.c_kapat
= true;
}
}
//XCOMBOBOX
Ekleme
if
(Infos.co_degerpub == true)
{
if
(Infos.co_kapat == true)
{
}
else
{
XComboBox
cbo = new XComboBox();
cbo.Name = "ComboBox" + Infos.co;
cbo.Text = "ComboBox" + Infos.co;
cbo.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(cbo);
Infos.strunq.Add(cbo);
Infos.co_kapat
= true;
}
}
//XLABEL
Ekleme
if
(Infos.l_degerpub == true)
{
if
(Infos.l_kapat == true)
{
}
else
{
XLabel
lbl = new XLabel();
lbl.Name = "Label" + Infos.l;
lbl.Text = "Label" + Infos.l;
lbl.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(lbl);
Infos.strunq.Add(lbl);
Infos.l_kapat
= true;
}
}
//XListBox
Ekleme
if
(Infos.lbx_degerpub == true)
{
if
(Infos.lbx_kapat == true)
{
}
else
{
XListBox
list1 = new XListBox();
list1.Name = "Listbox" + Infos.lbx;
list1.Text = "Listbox" + Infos.lbx;
list1.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(list1);
Infos.strunq.Add(list1);
Infos.lbx_kapat
= true;
}
}
//XPictureBox
Ekleme
if
(Infos.pic_degerpub == true)
{
if
(Infos.pic_kapat == true)
{
}
else
{
XPictureBox
picx = new XPictureBox();
picx.Name = "Picturebox" + Infos.pic;
picx.Text = "Picturebox" + Infos.pic;
picx.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(picx);
Infos.strunq.Add(picx);
Infos.pic_kapat
= true;
}
}
//XProgressBar
Ekleme
if
(Infos.pro_degerpub == true)
{
if
(Infos.pro_kapat == true)
{
}
else
{
XProgressBar
prox = new XProgressBar();
prox.Name = "ProgressBar" + Infos.pro;
prox.Text = "ProgressBar" + Infos.pro;
prox.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(prox);
Infos.strunq.Add(prox);
Infos.pro_kapat
= true;
}
}
//XRadioButton
Ekleme
if
(Infos.rad_degerpub == true)
{
if
(Infos.rad_kapat == true)
{
}
else
{
XRadioButton
radio = new XRadioButton();
radio.Name = "RadioButton" + Infos.rad;
radio.Text = "RadioButton" + Infos.rad;
radio.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(radio);
Infos.strunq.Add(radio);
Infos.rad_kapat
= true;
}
}
//XTextbox
Ekleme
if
(Infos.txt_degerpub == true)
{
if
(Infos.txt_kapat == true)
{
}
else
{
XTextBox
txt1 = new XTextBox();
txt1.Name = "Textbox" + Infos.txt;
txt1.Text = "Textbox" + Infos.txt;
txt1.Location = new System.Drawing.Point(50,
50);
Control.FromHandle(Window.Handle).Controls.Add(txt1);
Infos.strunq.Add(txt1);
Infos.txt_kapat
= true;
}
}
foreach (Control
v in Control.FromHandle(Window.Handle).Controls)
{
Infos.kontroller.Add(v);
if
(v.Focused)
{
Infos.secilikontrol
= v;
Infos.kontrool
= v;
}
}
if
(Infos.xmlolustur == true)
{
Infos.XMLOlustur();
Infos.xmlolustur
= false;
}
else
{
}
}
protected
override void
UnloadContent()
{
}
protected
override void
Update(GameTime gameTime)
{
base.Update(gameTime);
}
protected
override void
Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
eskideger = Infos.co;
base.Draw(gameTime);
}
}
}
Uygulamayı Çalıştıralım
ve Denemeler yapalım:

Açılış ekranı bu
şekildedir.Tam da istediğimiz gibi J
Görev Çubuğunda 1 adet Proje çalışmakta,2 form + GameWindow Hareket
ettirilememekte ve boyutları değiştirilememektedir.
Kontroller ile
oynayalım...

Gördüğünüz gibi Button
Kontrolümüz seçili olduğundan ötürü sağ tarafta Özelliklerini hemen anında değiştirebiliyoruz.Gerçek
zamanlı da sonucu görebiliyoruz.Değerleriyle oynayalım bakalım ne olacak:

ForeColor ve Text Değerlerini gördüğünüz üzere değiştirmiş bulunmaktayız...
Şimdi de bu GUI
Editörümüzün XML Çıktısına bir bakalım.
Öncelikle birkaç kontrol ekleyelim...

Şimdi de Özellikler
Formundan Kaydet e basarak bunun XML Çıktısını alalım(Bin->Debug içinde
kontroller.xml dosyasına bakınız)
<?xml version="1.0" encoding="utf-8"?>
<GUI>
<Kontrol
Name="button1">
<Tip>GUIEditor.XButton</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlLightLight</ForeColor>
<LocationX>39</LocationX>
<LocationY>33</LocationY>
<SizeW>75</SizeW>
<SizeH>23</SizeH>
<Text>Yeni Oyun</Text>
</Kontrol>
<Kontrol
Name="button2">
<Tip>GUIEditor.XButton</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>Cyan</ForeColor>
<LocationX>39</LocationX>
<LocationY>58</LocationY>
<SizeW>75</SizeW>
<SizeH>23</SizeH>
<Text>Devam Et</Text>
</Kontrol>
<Kontrol
Name="checkbox1">
<Tip>GUIEditor.XCheckBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>43</LocationX>
<LocationY>94</LocationY>
<SizeW>104</SizeW>
<SizeH>24</SizeH>
<Text>Onay 1</Text>
</Kontrol>
<Kontrol
Name="checkbox2">
<Tip>GUIEditor.XCheckBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>43</LocationX>
<LocationY>112</LocationY>
<SizeW>104</SizeW>
<SizeH>24</SizeH>
<Text>Onay 2</Text>
</Kontrol>
<Kontrol
Name="ComboBox1">
<Tip>GUIEditor.XComboBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>285</LocationX>
<LocationY>26</LocationY>
<SizeW>121</SizeW>
<SizeH>21</SizeH>
<Text>Örnek
ComboBox 1</Text>
</Kontrol>
<Kontrol
Name="ComboBox2">
<Tip>GUIEditor.XComboBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>284</LocationX>
<LocationY>56</LocationY>
<SizeW>121</SizeW>
<SizeH>21</SizeH>
<Text>Örnek
ComboBox 2</Text>
</Kontrol>
<Kontrol
Name="Label1">
<Tip>GUIEditor.XLabel</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>33</LocationX>
<LocationY>203</LocationY>
<SizeW>100</SizeW>
<SizeH>23</SizeH>
<Text>Örnek
Label1</Text>
</Kontrol>
<Kontrol
Name="Label2">
<Tip>GUIEditor.XLabel</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>32</LocationX>
<LocationY>224</LocationY>
<SizeW>100</SizeW>
<SizeH>23</SizeH>
<Text>Örnek
Label2</Text>
</Kontrol>
<Kontrol
Name="Listbox1">
<Tip>GUIEditor.XListBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>24</LocationX>
<LocationY>275</LocationY>
<SizeW>120</SizeW>
<SizeH>95</SizeH>
<Text>0</Text>
</Kontrol>
<Kontrol
Name="Picturebox1">
<Tip>GUIEditor.XPictureBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>299</LocationX>
<LocationY>445</LocationY>
<SizeW>300</SizeW>
<SizeH>150</SizeH>
<Text>Picturebox1</Text>
</Kontrol>
<Kontrol
Name="ProgressBar1">
<Tip>GUIEditor.XProgressBar</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>Highlight</ForeColor>
<LocationX>298</LocationX>
<LocationY>402</LocationY>
<SizeW>300</SizeW>
<SizeH>35</SizeH>
<Text>ProgressBar1</Text>
</Kontrol>
<Kontrol
Name="RadioButton1">
<Tip>GUIEditor.XRadioButton</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>329</LocationX>
<LocationY>181</LocationY>
<SizeW>104</SizeW>
<SizeH>24</SizeH>
<Text>Seçim1</Text>
</Kontrol>
<Kontrol
Name="RadioButton2">
<Tip>GUIEditor.XRadioButton</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>329</LocationX>
<LocationY>202</LocationY>
<SizeW>104</SizeW>
<SizeH>24</SizeH>
<Text>Seçim2</Text>
</Kontrol>
<Kontrol
Name="RadioButton3">
<Tip>GUIEditor.XRadioButton</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>ControlText</ForeColor>
<LocationX>330</LocationX>
<LocationY>223</LocationY>
<SizeW>104</SizeW>
<SizeH>24</SizeH>
<Text>Seçim3</Text>
</Kontrol>
<Kontrol
Name="Textbox1">
<Tip>GUIEditor.XTextBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>26</LocationX>
<LocationY>456</LocationY>
<SizeW>100</SizeW>
<SizeH>20</SizeH>
<Text>Örnek
TextBox</Text>
</Kontrol>
<Kontrol
Name="Textbox2">
<Tip>GUIEditor.XTextBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>26</LocationX>
<LocationY>482</LocationY>
<SizeW>100</SizeW>
<SizeH>20</SizeH>
<Text>Örnek
TextBox2</Text>
</Kontrol>
<Kontrol
Name="Textbox3">
<Tip>GUIEditor.XTextBox</Tip>
<AllowDrop>False</AllowDrop>
<Enabled>True</Enabled>
<ForeColor>WindowText</ForeColor>
<LocationX>25</LocationX>
<LocationY>509</LocationY>
<SizeW>100</SizeW>
<SizeH>20</SizeH>
<Text>Örnek
TextBox3</Text>
</Kontrol>
</GUI>
Evet gördüğünüz üzere tüm
kontrolleri daha önceden GUI.XML dosyamızda belirttiğimiz element ve
attributelere göre kaydetmektedir.
Bu demek oluyor ki burada yapılan tasarımları bir XML dosyasını okuyarak XNA
Oyununuzda kullanabilirsiniz.
Peki ama Olaylar?
XNA Oyununa nasıl
yükleyeceğiz?
Screen’leri nasıl oluşturacağız?
Onları da gelecek makalem de anlatmaya çalışarak GUI Editör örnek uygulamamızı
sonlandıracağız...
XNA’de “TOOL Programming” in nasıl
yapıldığını bu vesileyle az da olsa size göstermiş oldum.Gönül isterdi ki
300-400 sayfalık makaleler yazayım.Ama herkesin bu işlere ayırabileceği
vakitleri kısıtlı.Dolayısıyla diğer makalelerimi beklemenizi tavsiye
edeceğim...