Taktik #11 : Visual Studio'yu Tam Ekran Çalıştırmak


Eğer varolan ekran bana yeterli değil diyorsanız,SHIFT + ALT + ENTER a basarak Visual Studio yu tam ekran moduna getirebilirsiniz...

t11.png

Taktik #12: Hızlı arama için CTRL + D kullanmak

CTRL + F ile “Quick Find” ı açmak yerine,CTRL + D ile Hızlı bir şekilde kelimeleri arayabilir ve CTRL + ENTER ile de kelimeler arasında hızlı bir şekilde geçiş yaparak bulabilirsiniz.

t12.png





Taktik #13 : CTRL + D yi ayarlamak

Bir önceki taktiğimizde CTRL + D ile hızlı bir şekilde arama yaptık.Ama bu arama basit aramalar için geçerlidir.Peki ya daha detaylı aramalar istersek?

Bu noktada CTRL + F ile karşımıza çıkan Find Options ı kullanabiliriz.

t13.png

İlgili Seçenekleri tikledikten sonra artık daha ayrıntılı bir şekilde arama yapabiliriz.


Taktik #14 : Visual Studio kısayolları oluşturma

Tools ->Options Dialog->Environment->Keyboard kısmına giderek varolan Kısayolları değiştirebilir veya yeni bir kısayol ekleyebilirsiniz.Ekleme işlemi yapıldıktan sonra “Assign” etmeyi unutmayınız!

t14.png

Taktik #15 : Klavyeden Yorum Ekleme-Kaldırma Kısayolu

Hepimizin alışkın olduğu yorum satırı ekleme ve yorum satırını kaldırma tuşları mevcuttur:

t15.png

Peki bunları Klavye kısayolu tuşları ile nasıl yaparız?

Yorum Eklemek için:

Önce CTRL + K ardından CTRL + C’ye basmak gerekir.Bu işlem sonucunda mouse ile yaptığımız işlemin aynısı gerçekleşmektedir.


Yorumu kaldırmak için:

Önce CTRL + K ardından CTRL + U’ya basmak gerekir.Bu işlem sonucunda mouse işleminde yaptığımız kaldırma olayı aynen uygulanmaktadır.

Etiketler : 5in1 Visual Studio 2008
Kategoriler : Kişisel Microsoft
Yorumlar : 0 Yorum Yorum Yaz

Microsoft Student Partner’ler tarafından gerçekleştirilen Şubat ayı etkinliğinde İbrahim Ersoy 3 Şubat günü saat 20.00’de Teknik Tasarım webineri verecektir.Oyun Geliştirmenin en önemli ayaklarından Teknik Tasarım aşamasında Teorik Bilgiler XNA kullanılarak uygulamalı bir şekilde anlatılacaktır.Oyun Geliştirme ile ilgilenen herkesin kaçırmaması gereken bu webinere davetlisiniz...

 

Facebook Eventi:
http://www.facebook.com/event.php?eid=190038538003 

Katılımcı Bağlantısı:

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441876&Culture=TR-TR

 

Microsoft Office Live Meeting ile Webinerlere Bağlanmak İçin:

1. Ücretsiz Office Live Meeting Programını indirmek için resmi download sitesine buradan gidin: http://office.microsoft.com/en-us/help/HA101733831033.aspx
2. Kullanım koşullarını okuduktan sonra aşağıdaki "Accept Terms and Install Client" linkine tıklayın ve programı indirin.
3. Program indikten sonra setup'ı çalıştırarak programı yükleyin.
4. Office Live Meeting'i çalıştırdıktan sonra açılan penceredeki "Location" kutucuğuna webiner günü burada yayınlanan bağlantı kodunu girin.
5. Ardından Join'e basın.
6. Karşınıza adınızı soran bir kutucuk gelcektir, oraya adınızı girdikten sonra yeninden Join'e basmanız webinere bağlanmanız için yeterli.


Sizleri webinerimde görmekten büyük bir mutluluk duyarım.

Etiketler : Etiket Yok
Kategoriler : Kişisel Microsoft MSP XNA
Yorumlar : 0 Yorum Yorum Yaz

Taktik #6 : Klavye ile Araç pencerelerini boyutlandırmak

tip1_2.png


* İptal etmek isterseniz ESC tuşuna basabilirsiniz...

 

 

 

 Taktik #2: Editörde seçilenleri kutulama

BoxAndStreamSelection_thumb.jpg

 
Editörde seçim yapılırken Shift ve ok tuşlarının kullanıldığını biliyoruz ve bu yönteme “Stream” adını veriyoruz.yukarıda şekilde görülen 2.resim bunu göstermektedir.Bir diğer yöntem “Box” yöntemidir.Shift + Alt + Ok tuşu ile yapılır.Diğer bir alternatif yöntem ise Shift + CTRL + Ok tuşuna basılı tuttuğumuzda seçilen kelimeler otomatikman tanınıp “kutu” içine alınmaktadır.

Örneğin:
this.Name = "Form1";

this.kısmından sonra Shift + CTRL + Ok tuşlarına basarsanız “Name” değerini de otomatik olarak kutu içerisine seçili bir şekilde alacaktır...


Taktik #3: Beyaz Noktalar

Herhangi bir kod dosyası açıkken önce CTRL + R ve daha sonra CTRL + W tuşlarına basarak Beyaz noktaları görünür kılabilirsiniz:

tip3.png

Beyaz noktaları ortadan kaldırmak için yine aynı işlemi tekrarlayabilirsiniz: “önce CTRL + R ve daha sonra CTRL + W tuşlarına basmak”


Taktik #4: Pencerelere Bölmek

Window-Split diyerek bir pencereyi 2 yatay olarak ikiye bölebilirsiniz.

  tip4.png

 

Aynı pencereyi 2’ye böldük...

Window – New Window ifadesiyle açık olan kod sayfasının yeni bir instance ı oluşturulur:

tip4_1.png

Şeklinde yeni pencere oluşturulmuştur.Form1.Designer.cs:1 ve Form1.Designer.cs:2 adında 2 adet aynı kod sayfamızdan oluşmuştur.

Tabları ayırmak için ise:

Window->Move To Next Tab Group şeklinde yaparak tüm tabları ayırdık:

tip4_2.png

 

 Taktik #5: Araç Pencerelerini Klavye üzerinden hareket ettirmek

 

Mouse u kullanarak Araç pencerelerimizi sağa,sola,yukarı,aşağı yerleştirebiliyorduk.Peki ya bunu klavye ile nasıl yaparız?

 

* Örnek olarak Solution Explorer ı seçiniz.
* ALT + “-“ tuş kombinasyonunu çalıştırınız.
* Move diye bir menü açılacak.Aşağı ok tuşuyla seçip Enter a basınız.
* Şimdi klavye tuşlarıyla tuşlara doğru imlecinizi hareket ettirin ve istediğiniz olduğunda Enter a basın.Böylelikle Klavye ile Araç penceresinin yerini değiştirmiş oldunuz.

 

tip5.png


Yarın yine 5 adet Visual Studio 2008 hilesini anlatacağım....


 

Etiketler : Visual Studio 2008 5in1
Kategoriler : Kişisel Microsoft
Yorumlar : 0 Yorum Yorum Yaz

Merhabalar,

Uygulama henüz tamamlanmadı ama sizlere "XNA GUI Editörü" göstermek istiyorum.

Drag & Drop Desteği bulunmaktadır.Sol dan kontrol e tıkla istediğin yere taşı :)) Tabi iş bununla bitmedi.Eksiklikleri çok fazla! ama bu sadece bir "Test Sürüşü".Kaynak kodlarını da veriyorum bu uygulamanın isteyen olursa kodlara bakabilir(Amele Kod yazdım,OOP yok).Aceleyle yazınca böyle oluyor :)

Ama Performanslı çalışıyor.Onu belirtmek isterim :)

GUI Editör






Bu arada görüşleriniz olursa dinlemek isterim.Görüşlerinize değer veriyorum.Eleştiriyi kabul etmiyorum çünkü 2 günde yazıldı :D:D Planlamasından tutun kontrollerin geliştirilmesine kadar.Bana da haksızlık etmeyin :P Birde kendimize de vakit ayırıyoruz.Uygulamayı tam anlamıyla bitirince blogumda yayınlayacağım + nasıl yaptığımı da anlatacağım.Şimdi bitmemiş uygulama için anlatmaya kalksam "Ne biçim bir uygulama bu?" diyeceksiniz :D:D Onun için tam anlamıyla bitmesini bekleyin :) (Birazcık daha sabır)


Görüşmek üzere...Sizleri "Test Sürüşü" ile başbaşa bırakıyorum :D


Ibrahim Ersoy
Microsoft Student Partner

Etiketler : XNA GUI Editör
Kategoriler : Kişisel Microsoft MSP Projelerim XNA
Yorumlar : 1 Yorum Yorum Yaz


In this article i will be talking about “Rich-Effects XNA Applications” shortly “REXA”.This article will be just “Semi-Technical Analysis”  on REXA.No more applications for now : This is just a PROPOSAL.

 

WHAT IS REXA?

As we want to describe it “Technically” REXA is a new Application Model  that enables us using XNA’s Visual Perfection and WPF’s User-Friendly Environment together.WPF and XNA has its own disavantages.REXA is here to turn the tide.

WPF's Disadvantages:

 

1.       Complexity: A Windows Forms developer needs to spend several weeks to understand terms,behaviors and other complicated objects.Whether your experienced or not WPF takes your lots of time to learn in a discipline way.

2.       In- Box Control Suite: It is limited in WPF

3.       3rd Party Tools Support: Tools developed by 3rd party companies(Windows Forms,Web Controls) are much more than WPF Controls.

4.       New Technology: WPF is a new technology and needs to improve much more.

 

XNA's Disadvantages:

   

1.       UI Designer: You develop your applications without a designer.Thats pretty awful if you’re racing against time.

2.       No Controls: You need to create controls from shapes,models or use windows controls.

3.       Works only in Windows,XBOX and Zune platforms.Why not support in Wii,PS3,Linux,MAC,Iphone?

 

REXA” Theory helps to supress these handicaps.


Why Rich?

Rich stands for the broad set of multimedia  -multiple fonts, vectors and bitmap graphic files, animations, online conferencing, audio,video,3D Integration,Shaders... goes on.


Why Do we need REXA?

Current capabilities of the products are limited,they dont provide much usability for the purpose of integrating different technologies together.

 

How can there be a REAL “XNA-WPF Integration” (Ignore Syntax Errors)

#if REXA


<WPFScript id="WPFScript1" type="XAML" location=”100,500” size=”300,300”>

  {

    <UserControl x:Class="Kontrol1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Height="300" Width="300">

    <Grid>

        <ComboBox Height="23" Margin="48,70,132,0" Name="comboBox1" VerticalAlignment="Top" SelectionChanged="comboBox1_SelectionChanged">

            <ComboBoxItem>1</ComboBoxItem>

            <ComboBoxItem>2</ComboBoxItem>

            <ComboBoxItem>3</ComboBoxItem>

            <ComboBoxItem>4</ComboBoxItem>

        </ComboBox>

    </Grid>

</UserControl>

}

</WPFScript>

<CodeBehind link="WPFScript1" type="C#">

   {

     private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {

         ComboBoxItem cbi = ((ComboBox)sender).SelectedItem as ComboBoxItem;

         MessageBox.Show(cbi.Content.ToString());

        }

   }

</CodeBehind>
#endif

 

 

 

 


In REXA,WPF Scripts must be able to be called inside XNA Project(From the class you want to embed- Game1.cs  etc.)

 

And not only embedding but also we must be able to give source destination of the WPF UserControl.

 

 

#if REXA


<WPFScript id="WPFScript1" xamlsource="Kontrol1.xaml" codefile="Kontrol1.xaml.cs"/>

#endif

 

 

ALL CONTROLS THAT CAN BE USED IN REXA:

 

Controls:


Button
CheckBox
ColorPicker
ComboBox
DataGrid
DateChooser
DataField
Hslider
HorizontalList
Image
Label
LinkButton
List
PopUpButton
PopUpMenuButton
ProgressBar
RadioButton
RadioButtonGroup
RichTextEditor
TextBox
TileList
Tree
Vslider
VideoDisplay
WPFScript

Layout Controls:

ApplicationControlBar
Canvas
ControlBar
Form
Grid
Hbox
Hrule
Panel
Tile
TitleWindow
Vbox
Vrule

 

Navigators:

Accordion
ButtonBar
LinkBar
Menu
TabBar Classic
Ribbon
ViewStack


Charts:

BarChart
PieChart
LineChart
Legend
ColumnChart
AreaChart

 

 

3DControls:

Model
2DTexture
3DTexture
ShaderSet
Shader
AnimationSet
Animation
Curve
GUISelector
SkyBox
VIEWPORT

 

 

 

Will be writing much more in the future...

Etiketler : XNA REXA Proposal
Kategoriler : Microsoft XNA
Yorumlar : 0 Yorum Yorum Yaz

xna_logo.png

In this article we will be working on using Windows Controls and WPF UserControls inside an XNA Game Project.

They tell Windows Controls cant be used inside an XNA game let alone WPF.Well,that has been proved in this article.

Components:

Windows Controls we’ll be using

Button
TextBox
CheckBox
ElementHost

Tools

 

XNA GS 3.1 veya Visual Studio 2008(SP1)
.NET Framework 3.5(SP1)

 YOU CAN DOWNLOAD Source Codes!

 

We are creating a new project:

1.png

 

Now we will add reference.Project->Add Reference and then  choose “System.Windows.Forms” namespace.

2.png

And declare it on Game1.cs:
3.png

Note: You may  need to declare and add reference to “System.Drawing” namespace as well.

 

TextBox Control:

An Input control we can use on Windows Forms.We add Textbox to our XNA project:


In anywhere we can declare variables:

TextBox text1 = new TextBox();

With that we have created a new Textbox variable.We are adding the code below to our Initialize() function.   

 

 

   protected override void Initialize()

        {           

            base.Initialize();

            text1.Location = new System.Drawing.Point(40, 40);

            text1.BorderStyle = BorderStyle.None;

            text1.Multiline = true;

            text1.Size = new Size(400, 400);

            Control.FromHandle(Window.Handle).Controls.Add(text1);

        }

 

Let us explain : “Control.FromHandle(Window.Handle).Controls.Add(ornek);”

Control.FromHandle” -> helps us to call the handle we will add textbox.

“Control.FromHandle(Window.Handle)” -> We take the Handle of GameWindow class named Window.Game class is not a control.But because of GameWindow is a control that can be used on XNA project,we can call and add Windows Controls through it.We were able to add or remove any control while coding in Windows Forms because Windows Forms was itself a control too.Now let me tell you this: “Form class & GameWindow class looks alike”.By thinking so  we can make RAD(Rapid Application Development) in XNA just like we do while developing Windows Form Based Applications.

But if you run the project,you will not be able to enter a key inside TextBox class.


Because while Textbox class uses “System.Windows.Forms.Keys”,XNA accepts only “XNA.Framework.Input.Keys”.Although we cant make it with the Windows-Way,we will make it as we do on XNA Inputs.

 

string var_text1;

we add a string valuable that will store all the texts from your input and then assign to our text1 named TextBox class

protected override void Update(GameTime gameTime)

 {

   base.Update(gameTime);

   if (text1.Focused)

    {

      KeyboardState ns = Keyboard.GetState();

      foreach (Microsoft.Xna.Framework.Input.Keys a in ns.GetPressedKeys())

        {

          var_text1 = a.ToString();

          text1.Text += var_text1;

        }

     }

 }



KeyboardState ns = Keyboard.GetState();”
à we get all the input from Keyboard(“ns.GetPressedKeys()”).This helps us to to write any key value to our Textbox.

If you wish you may not take all the keys,just use “if-else” structure and take any key you want to.


Let us run the project.Whats going to happen?

 

4.png

 

When we press a key,it wrote as we pressed 5 times.Let me explain this:

In Xna, every event happens on Update function depends on Gametime value.1 sec process is repeated 5 times so that the game window refreshes as we want.Why is it 1 sec/5? Because in continuous things like “chasing a car,shooting an opponent” we must see whats happening instantly.The user must feel like he is playing a “Real-time” game.Because of that Gametime repeats 5 times in 1 sec.Even 1 sec can differ sometime.

 

Lets go back to our project.How we will solve this?


create an int variable and query it on Update function.

 

int ct = 0; //the start value must be 0 so it cant be repeated.

Then update our Update function seen below:

protected override void Update(GameTime gameTime)

 {

   base.Update(gameTime);

   if (text1.Focused)

    {

      ct = ct -1;

      if(ct < 0)

       {

         ct = 5;

       }

 

     if(ct == 0)

       {

         KeyboardState ns = Keyboard.GetState();

         foreach (Microsoft.Xna.Framework.Input.Keys a in ns.GetPressedKeys())

          {

           var_text1 = a.ToString();

           Text1.Text += var_text1;

          }

       }

     }

  }

 


And you can enter any value without repeating:

5.png

Thats it! You have created a Textbox control inside an XNA Window...

 

BUTTON Control:


Button control helps us to accept a process.In this section i will be talking about how to add a button control and its eventhandler.

We declare our Button Class first.

Button
btn = new Button();

To add this inside project-update Initialize function just like below:

protected override void Initialize()

 {           

   base.Initialize();

   btn.Text = "Press Me!";

   btn.Location = new System.Drawing.Point(50, 50);

   btn.FlatStyle = FlatStyle.Popup;

   Control.FromHandle(Window.Handle).Controls.Add(btn);

 }

 

Now lets write down a simple EventHandler that will show us a MessageBox.

protected override void Initialize()

  {           

    base.Initialize();

    btn.Text = "Press Me!";

    btn.Location = new System.Drawing.Point(50, 50);

    btn.FlatStyle = FlatStyle.Popup;

    btn.Click += new System.EventHandler(ButtonClick);

    Control.FromHandle(Window.Handle).Controls.Add(btn);

  }

 

private void ButtonClick(object sender, EventArgs e)

  {

    MessageBox.Show("Button is Clicked!");

  }


By doing so we have added “Windows Control-Based” events inside XNA Game.

 

 

6.png

CHECKBOX Control:

 

Checkbox control helps us to select multi-options.

 

We declare it as seen below:

CheckBox cb = new CheckBox();

 

Using it:

 

protected override void Initialize()

 {           

   base.Initialize();

   cb.CheckState = CheckState.Unchecked;

   cb.Location = new System.Drawing.Point(50, 50);

   cb.Text = "Yes";

   cb.BackColor = System.Drawing.Color.CornflowerBlue;

   Control.FromHandle(Window.Handle).Controls.Add(cb);

 }

 

 

7.png

 

Lets create an eventhandler and change the text value of checkbox object.

 

protected override void Initialize()

 {           

   base.Initialize();

   cb.CheckState = CheckState.Indeterminate;

   cb.Location = new System.Drawing.Point(50, 50);

   cb.Text = "Indeterminate";

   cb.BackColor = System.Drawing.Color.CornflowerBlue;

   cb.CheckStateChanged += new EventHandler(CBChanged);

   Control.FromHandle(Window.Handle).Controls.Add(cb);

 }

 

private void CBChanged(Object sender, EventArgs e)

 {

  if (cb.CheckState == CheckState.Unchecked)

     {

       cb.Text = "No";

     }

  else if (cb.CheckState == CheckState.Checked)

     {

       cb.Text = "Yes";

     }

 }

 

We have changed the code a little bit.

Check=Checked
No Check=Unchecked

Both of Them=Indeterminate

 

Lets run it!


Indeterminate Mode:
8.png

Unchecked Mode:
9.png

Checked Mode:
10.png



I have explained Windows controls as detailed as i can.Now lets talk about the most exciting feature: WPF!

 



WPF User Controls:

 

WPF User Controls are the most exciting controls we can add inside XNA Game.

 

But first we need to add some references that a WPF Application alone needs:
 

·         Presentation Core

·         Presentation Framework

·         UIAutomationProvider

·         WindowsBase

·         WindowsFormsIntegration

 

 

After that we will be adding our pre-made WPFUserControl from Project->“Add Existing Item...”

11.png


Find the files with Windows Markup Files & C# Source file and add them:


12.png

Now what we will do is to add them to our project as we have done before.

 

 

You can add the namespace we used for WPF UserControl.

 

using WindowsFormsApplication1; //Thats the Namespace we have used inside WPF UserControl

 

Inside this WPF User Control we have added a combobox and an event “SelectionChanged” which shows us message for the selected item.

 

Code of WPF UserControl:

 

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)

  {

    ComboBoxItem cbi = ((ComboBox)sender).SelectedItem as ComboBoxItem;

    MessageBox.Show(cbi.Content.ToString());

  }

 

XAML of WPF UserControl:

 

<UserControl x:Class="WindowsFormsApplication1.Kontrol1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Height="300" Width="300">

    <Grid>

        <ComboBox Height="23" Margin="48,70,132,0" Name="comboBox1" VerticalAlignment="Top" SelectionChanged="comboBox1_SelectionChanged">

            <ComboBoxItem>1</ComboBoxItem>

            <ComboBoxItem>2</ComboBoxItem>

            <ComboBoxItem>3</ComboBoxItem>

            <ComboBoxItem>4</ComboBoxItem>

        </ComboBox>

    </Grid>

</UserControl>

 

 

Lets add the control!

Kontrol1 kontrol11 = new Kontrol1();

 

We declared the control.

 

Then inside “Initialize()” function call our control named Kontrol11...

 

 

protected override void Initialize()

 {           

   base.Initialize();

   //ElementHost object helps us to connect a WPF User Control.

   ElementHost elementHost1 = new ElementHost();

   elementHost1.Location = new System.Drawing.Point(308, 69);

   elementHost1.Name = "elementHost1";

   elementHost1.Size = new System.Drawing.Size(350, 181);

   elementHost1.TabIndex = 1;

   elementHost1.Text = "elementHost1";

   elementHost1.Child = this.kontrol11;

   Control.FromHandle(Window.Handle).Controls.Add(elementHost1);

 }

 

 

As you can see above we have added a WPF UserControl to our project

 

 

Lets run this project.Whats going to happen?

 

13.png

 


Yes Different UIS such as XAML cannot be used in directly inside an XNA Game.For that we must convert it to Single-Threaded.

 

Open your Program.cs file:



 

Change as it is:

 

 

 

using System;

 

namespace DemoTest

{

    static class Program

    {

        [STAThread]

        static void Main(string[] args)

        {

            using (Game1 game = new Game1())

            {

                game.Run();

            }

        }

    }

}

 


[STAThread] Helps us to achieve this.Now our project is Single Threaded.And call any different UIs inside XNA!

 

14.png

 

As you can see we have added it inside XNA Game!


15.png

We are selecting an item and then:

 

16.png

 

It shows us the selected value. 

 

 

In this article i have written as detailed as much to explain how we can do all of this inside XNA Game.

 

By doing so you have integrated Windows Controls and WPF User Controls inside XNA!


I will tell much more about REXA(Rich-Effects XNA Applications) in the following days.



Have a nice day

 

Ibrahim Ersoy
Microsoft Student Partner – Software Developer

 

Etiketler : XNA Windows Forms WPF Integration
Kategoriler : Microsoft XNA
Yorumlar : 0 Yorum Yorum Yaz

xna_logo.png

Bu makalemiz XNA’de Windows Kontrolleri ve WPF uygulamalarını kullanmaya yönelik olacaktır.XNA’ye yeni başlayanlara bırakın WPF’in XNA içinde kullanılmasını,Windows Kontrollerinin bile dahil edilemeyeceği söylenir!
Bu büyük bir bilgi kirliliğidir.Bu makalemizde bunun mümkün olduğunu sizlere kanıtlayacağım.Unutmayın!  İmkansız diye birşey yoktur.Gerekli Araştırma ve Geliştirme yapıldıktan sonra herşey mümkündür.Lafı daha fazla uzatmadan  işlemlerimize başlıyoruz...

 

Bileşenler:

Kullanılacak Windows Kontrolleri

Button
TextBox
CheckBox
ElementHost

Kullanılacak Araçlar

 

XNA GS 3.1 veya Visual Studio 2008(SP1)
.NET Framework 3.5(SP1)

 Örnek Kodlar

 

İşlemler:

XNA GS veya Visual Studio 2008 imizi açıp yeni bir XNA 3.1 uygulaması oluşturuyoruz:

1.png

 

Uygulamayı oluşturduğumuzda kodlarımız şu şekildedir...

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;

 

namespace DemoTest

{   

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

 

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

        }

      

        protected override void Initialize()

        {

            base.Initialize();

        }

      

        protected override void LoadContent()

        {          

            spriteBatch = new SpriteBatch(GraphicsDevice);          

        }

      

        protected override void UnloadContent()

        {

         

        }

 

        protected override void Update(GameTime gameTime)

        {

            base.Update(gameTime);

        }

       

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Color.CornflowerBlue)

            base.Draw(gameTime);

        }

    }

}

 

 

Şimdi yapacağımız işlem,Project->Add Reference ile “System.Windows.Forms” namespace ini projemizin referanslarına dahil etmektir.

2.png

Ve namespace i de projemizde deklare ediyoruz:

3.png

Not: Ekstra dan System.Drawing namespace’ini de ekleyip Deklare ediniz...

TextBox Kontrolü:


Input işlemleri için kullanabileceğimiz bir Windows Kontrolüdür.XNA projemize Textbox ı:

 

Uygulamanın değişken tanımlayabileceğimiz herhangi bir yerinde

TextBox ornek = new TextBox();

 

tarzında yeni bir TextBox nesnesi tanımlıyoruz ve yüklenmesini sağlamak için de aşağıdaki fonksiyona arkaplanı gri olarak görülen kodları yazıyoruz.

   

 

 

   protected override void Initialize()

        {           

            base.Initialize();

            ornek.Location = new System.Drawing.Point(40, 40);

            ornek.BorderStyle = BorderStyle.None;

            ornek.Multiline = true;

            ornek.Size = new Size(400, 400);

            Control.FromHandle(Window.Handle).Controls.Add(ornek);

        }

 

Control.FromHandle(Window.Handle).Controls.Add(ornek);” kod yapısını birazcık açıklamamda fayda var.


Control.FromHandle” anlaşılacağı üzere İlgili handle üzerindeki controlü çağırmamıza yaramaktadır.

“Control.FromHandle(Window.Handle)” Window adı verilen GameWindow nesnesinin Handle ını alıyor.Game sınıfı bir kontrol değildir. Ama Window nesnesi bir kontrol olduğundan ötürü handle ını çağırıp kontrol ekleyebilir veya kaldırabilirsiniz.Windows Formlarında her şeyin birer kontrol olduğunu varsayarak istediğimiz yere istediğimiz kontrolü yerleştirebiliyorduk.Windows Geliştiricileri için şöyle bir varsayım yapmalarını rica edeceğim: “Form nesnesi ile GameWindow nesnesi birbirine benzemektedir.” Bu şekilde düşünürsek XNA uygulamalarımızda Windows Forms da yaptığımız “RAD(Rapid Application Development)” ı aynen XNA’de de uygulayabiliriz.


Lakin uygulamanızı çalıştırdığınızda Textbox a harf giremediğinizi farkedeceksinizdir.


Bunun sebebi Textbox ın “System.Windows.Forms.Keys” değerlerini kabul ederken,XNA’in “XNA.Framework.Input.Keys” i kabul etmesidir.Windows yöntemiyle yapamayacağımıza göre girilen inputları bir string değerine aktarıp okutmaktır.

 

string deger;

diye bir değişken tanımlayalım ardından Update fonksiyonuna gelerek aşağıdaki gibi bir kodlama ekleyelim:


protected override void Update(GameTime gameTime)

 {

   base.Update(gameTime);

   if (ornek.Focused)

    {

      KeyboardState ns = Keyboard.GetState();

      foreach (Microsoft.Xna.Framework.Input.Keys a in ns.GetPressedKeys())

        {

          deger = a.ToString();

          ornek.Text += deger;

        }

     }

 }



KeyboardState ns = Keyboard.GetState();” kodu ile o an basılan tuşların değerlerini aldık.Tabi Textbox için tüm tuşları alıyoruz(“ns.GetPressedKeys()”).Dilerseniz tüm tuşları almayıp if else yapısı ile sadece belirli tuşların basılmasını izleyip değer değişkeni güncelleyebilir dilerseniz de foreach döngüsü içerisinde if else yapısı kullanarak Textbox a yazılmasını istemediğiniz tuşları eleyebilirsiniz.


Uygulamayı bu haliyle çalıştıralım bakalım.Ne olacak?

 

4.png

 

1 kere A tuşuna basınca birden fazla tuş Textbox ımıza yazıldı.bunu biraz açıklayalım.

Xna de Update kısmında yapılan her olay belirli Gametime değerine göre olur.1 snlik işlemde 5 kere tekrar edilir.1 işlem 12 salise sürer.5 kere aynı işlemden yapılınca 60 salise = 1 sn eder.Burda 5 kere “A” harginin yazılmasının sebebi de budur.

Peki bunun çözümü nasıldır?


bir int değeri oluşturup Update işlemlerini sorgulayacağız.

Şöyle:

İlk önce ct adında bir int değer tanımlıyoruz değişkenleri tanımladığımız alanda.

int ct = 0;

Ardından Update fonksiyonumuzu aşağıda görüldüğü üzere güncelliyoruz:

protected override void Update(GameTime gameTime)

 {

   base.Update(gameTime);

   if (ornek.Focused)

    {

      ct = ct -1;

      if(ct < 0)

       {

         ct = 5;

       }

 

     if(ct == 0)

       {

         KeyboardState ns = Keyboard.GetState();

         foreach (Microsoft.Xna.Framework.Input.Keys a in ns.GetPressedKeys())

          {

           deger = a.ToString();

           ornek.Text += deger;

          }

       }

     }

  }

 


Bundan böyle istediğimiz tuşu tekrarlanmadan girebiliriz:

5.png

Tüm uygulamanın kaynak 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;

using System.Drawing;

using System.Threading;

 

namespace DemoTest

{   

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

        TextBox ornek = new TextBox();

        string deger;

        int ct = 0;

 

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

          

        }

      

        protected override void Initialize()

        {

           

            base.Initialize();

            ornek.Location = new System.Drawing.Point(40, 40);

            ornek.BorderStyle = BorderStyle.None;

            ornek.Multiline = true;

            ornek.Size = new Size(400, 400);

            Control.FromHandle(Window.Handle).Controls.Add(ornek);

        }

      

        protected override void LoadContent()

        {          

            spriteBatch = new SpriteBatch(GraphicsDevice);           

        }

      

        protected override void UnloadContent()

        {

         

        }

 

        protected override void Update(GameTime gameTime)

        {

            base.Update(gameTime);

            if (ornek.Focused)

            {

               ct = ct -1;

               if(ct < 0)

               {

                   ct = 5;

               }

 

 

               if(ct == 0)

               {

               KeyboardState ns = Keyboard.GetState();

               foreach (Microsoft.Xna.Framework.Input.Keys a in ns.GetPressedKeys())

                {

                  deger = a.ToString();

                  ornek.Text += deger;

                }

               }

            }

         }

 

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);

            base.Draw(gameTime);

        }

    }

}

 

 

TextBox ile yapılan bu uygulamamız umarım işinize yarar.

BUTTON:


Button kontrolü bir işlemi onayladığımızı gösteren kontrollerden birisidir.Bu bölümde Button kontrolü nasıl yüklenir ondan bahsedeceğim:

Not:Yukarıdaki Textbox yüklemesi yapılmadan önceki işlemleri(referans yükleme ve tanımlama) yaptığınızdan emin olun.

Button btn = new Button();

Şeklinde deklare edilir.

Projede kullanılması:

protected override void Initialize()

 {           

   base.Initialize();

   btn.Text = "Beni Tıkla!";

   btn.Location = new System.Drawing.Point(50, 50);

   btn.FlatStyle = FlatStyle.Popup;

   Control.FromHandle(Window.Handle).Controls.Add(btn);

 }

 

Şeklindedir.lakin bu button a ait bir eventhandler yazmadığımızı farketmişsinizdir.şimdi onu da yazalım.

protected override void Initialize()

  {           

    base.Initialize();

    btn.Text = "Beni Tıkla!";

    btn.Location = new System.Drawing.Point(50, 50);

    btn.FlatStyle = FlatStyle.Popup;

    btn.Click += new System.EventHandler(ButtonClick);

    Control.FromHandle(Window.Handle).Controls.Add(btn);

  }

 

private void ButtonClick(object sender, EventArgs e)

  {

    MessageBox.Show("Button Tıklandı!");

  }

Şeklinde kodlarımızı güncelliyoruz.

Yukarıda eventhandlerımızı da yazmış bulunmaktayız.Button yükleme olayı da bundan ibarettir.

 

 

6.png

 

Button Uygulamasının 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;

using System.Drawing;

using System.Threading;

 

namespace DemoTest

{   

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

        Button btn = new Button();

 

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

          

        }

      

        protected override void Initialize()

        {           

            base.Initialize();

            btn.Text = "Beni Tıkla!";

            btn.Location = new System.Drawing.Point(50, 50);

            btn.FlatStyle = FlatStyle.Popup;

            btn.Click += new System.EventHandler(ButtonClick);

            Control.FromHandle(Window.Handle).Controls.Add(btn);

        }

 

        private void ButtonClick(object sender, EventArgs e)

        {

            MessageBox.Show("Button Tıklandı!");

        }

      

        protected override void LoadContent()

        {          

            spriteBatch = new SpriteBatch(GraphicsDevice);          

        }

      

        protected override void UnloadContent()

        {

         

        }

 

        protected override void Update(GameTime gameTime)

        {

            base.Update(gameTime);           

         }

 

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);

            base.Draw(gameTime);

        }

    }

}

 


 

CHECKBOX Kontrolü:

 

Checkbox kontrolü çoklu seçimi olan işlerde kullanılan bir Windows Kontrolüdür.

 

Deklare edilişi:

CheckBox cb = new CheckBox();

 

Kullanılışı:

 

protected override void Initialize()

 {           

   base.Initialize();

   cb.CheckState = CheckState.Unchecked;

   cb.Location = new System.Drawing.Point(50, 50);

   cb.Text = "Evet";

   cb.BackColor = System.Drawing.Color.CornflowerBlue;

   Control.FromHandle(Window.Handle).Controls.Add(cb);

 }

 

Şeklindedir.

 

7.png

 

Bir eventhandler ekleyerek checkbox textini değiştirelim:

 

protected override void Initialize()

 {           

   base.Initialize();

   cb.CheckState = CheckState.Indeterminate;

   cb.Location = new System.Drawing.Point(50, 50);

   cb.Text = "Tanımsız";

   cb.BackColor = System.Drawing.Color.CornflowerBlue;

   cb.CheckStateChanged += new EventHandler(CBChanged);

   Control.FromHandle(Window.Handle).Controls.Add(cb);

 }

 

private void CBChanged(Object sender, EventArgs e)

 {

  if (cb.CheckState == CheckState.Unchecked)

     {

       cb.Text = "Hayır";

     }

  else if (cb.CheckState == CheckState.Checked)

     {

       cb.Text = "Evet";

     }

 }

 

Uygulamayı birazcık değiştirdik.ve ilk yüklendiğinde tanımsız olmasını istedik.

Check olması=Checked
Check olmaması=Unchecked

Her ikisinin de olmaması=Indeterminate

 

Uygulamayı çalıştırıyoruz.


Indeterminate Mod:
8.png

Unchecked Mod:
9.png

Checked Mod:
10.png





Windows Kontrolleri örneklerimizi buraya kadar elimden geldiğince XNA de uygulatmaya çalıştım.Şimdi de işin en heyecanlı kısmına gelelim: WPF!

 



WPF Uygulamaları:

 

WPF Uygulamalarını XNA e dahil etmek işin en heyecan verici ve zaman isteyenidir.

 

Eklememiz gereken birkaç adet ek referans bulunmaktadır.Bunları ekleyerek işe hemen başlayalım:

 

  • Presentation Core
  • Presentation Framework
  • UIAutomationProvider
  • WindowsBase
  • WindowsFormsIntegration

 

 

Bu reference ları ekledikten sonra önceden hazırladığımız bir WPF UserControl ü projeye Project->“Add Existing Item...” ile ekleyelim

11.png


Ve ilgili dosyayı bulalım ve ekleyelim:


12.png

Şimdi yapacağımız işlem yukarıdaki Windows Kontrollerinde olduğu gibi Kontrol yüklemek.

 

 

İlk önce Kontrolümüzün bulunduğu namespace i projeye dahil ediyoruz.

 

using WindowsFormsApplication1;

 

Bu WPF UserControlümüzün namespace idir.Burayı sizin namespace iniz neyse ona göre değiştirebilirsiniz...

 

WPF User Controlümüz ün içerisinde bir WPF Combobox bulunmaktadır.Seçilen değere göre ekrana mesaj göstermektedir.

 

Kod Dosyası:

 

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)

  {

    ComboBoxItem cbi = ((ComboBox)sender).SelectedItem as ComboBoxItem;

    MessageBox.Show(cbi.Content.ToString());

  }

 

XAML Dosyası:

 

<UserControl x:Class="WindowsFormsApplication1.Kontrol1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Height="300" Width="300">

    <Grid>

        <ComboBox Height="23" Margin="48,70,132,0" Name="comboBox1" VerticalAlignment="Top" SelectionChanged="comboBox1_SelectionChanged">

            <ComboBoxItem>1</ComboBoxItem>

            <ComboBoxItem>2</ComboBoxItem>

            <ComboBoxItem>3</ComboBoxItem>

            <ComboBoxItem>4</ComboBoxItem>

        </ComboBox>

    </Grid>

</UserControl>

 

 

 

Kontrol1 kontrol11 = new Kontrol1();

 

Diyerek WPF User Controlümüzü projemize dahil ediyoruz.

 

Ardından “Initialize()” fonksiyonunda Kontrolümüzü çağırıyoruz...

 

 

protected override void Initialize()

 {           

   base.Initialize();

   //ElementHostumuz

   ElementHost elementHost1 = new ElementHost();

   elementHost1.Location = new System.Drawing.Point(308, 69);

   elementHost1.Name = "elementHost1";

   elementHost1.Size = new System.Drawing.Size(350, 181);

   elementHost1.TabIndex = 1;

   elementHost1.Text = "elementHost1";

   elementHost1.Child = this.kontrol11;

   Control.FromHandle(Window.Handle).Controls.Add(elementHost1);

 }

 

 

Yukarıdaki koddan da anlaşılacağı üzere ElementHost kullanarak WPF User Controlümüzü XNA uygulamamızın içine çağırdık.

 

 

Bu şekliyle çalıştıralım bakalım.Ne olacak?

 

13.png

 


Evet doğru söylemektedir.Farklı UI elementleri kullanan uygulamalarda bu tarz hatalarla karşılaşmanız çok mümkündür.Çünkü bizim yapmaya çalıştığımız uygulama şu aşamada Multi-Thread gözükmektedir.Bizden bunu SingleThread yapmamız istenmektedir.

 

Program.cs dosyamızı açarak:



 

 

 

using System;

 

namespace DemoTest

{

    static class Program

    {            

        static void Main(string[] args)

        {

            using (Game1 game = new Game1())

            {

                game.Run();

            }

        }

    }

}

 


 

 

Aşağıdaki gibi değiştirelim:

 

 

 

using System;

 

namespace DemoTest

{

    static class Program

    {

        [STAThread]

        static void Main(string[] args)

        {

            using (Game1 game = new Game1())

            {

                game.Run();

            }

        }

    }

}

 


[STAThread] kullanarak istenileni gerçekleştirdik.Şimdi uygulamamızı bir daha çalıştıralım...

 

14.png

 

WPF Uygulamamız Arka Planı Gri bir alanda görüntüleniyor gördüğünüz üzere..


15.png

WPF Uygulamasındaki Combobox larımız dan bir eleman seçiyoruz.ve

 

16.png

 

Bize seçtiğimiz elemana ait bilgiyi gösteriyor.

 


XNA-WPF Uygulamasına ait kaynak 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;

using System.Drawing;

using System.Windows.Forms.Integration;

using System.Threading;

using WindowsFormsApplication1;

 

namespace DemoTest

{   

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

        Kontrol1 kontrol11 = new Kontrol1();

    

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";          

        }

      

        protected override void Initialize()

        {           

            base.Initialize();

            //ElementHostumuz

            ElementHost elementHost1 = new ElementHost();

            elementHost1.Location = new System.Drawing.Point(308, 69);

            elementHost1.Name = "elementHost1";

            elementHost1.Size = new System.Drawing.Size(350, 181);

            elementHost1.TabIndex = 1;

            elementHost1.Text = "elementHost1";

            elementHost1.Child = this.kontrol11;

            Control.FromHandle(Window.Handle).Controls.Add(elementHost1);

        }

      

        protected override void LoadContent()

        {          

            spriteBatch = new SpriteBatch(GraphicsDevice);          

        }

      

        protected override void UnloadContent()

        {

         

        }

 

        protected override void Update(GameTime gameTime)

        {

            base.Update(gameTime);           

         }

 

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);

            base.Draw(gameTime);

        }

    }

}

 

 

 

 

 

Bu makalemizde Windows Kontrollerinden Textbox,Button,CheckBox ve ElementHost’u XNA Uygulamalarına dahil ettik ve örnek uygulamalarla nasıl kullanabildiğimizi gördük.

 

Bu vesileyle XNA de Windows Kontrolleri ve WPF Uygulamalarınında Entegrasyonu nu sağlamış olduk.

 


Bu makale den sonra XNA in sırf Windows,XBOX yada Zune tabanlı oyun geliştirme de işe yaramadığını çok daha geniş alanlara da hitap edebileceğini,Windows uygulamalarınızı “Zengin efektli XNA Uygulamaları”na dönüştürmenin sizin elinizde olduğunu göreceksiniz.

 

 

İlerleyen makalelerimde “Zengin Efektli XNA Uygulamaları” deyiminden ne demek istediğimi detaylı bir şekilde anlatacağım.

 

 



XNA in saklı güzelliklerini anlatmaya devam edeceğim...

 

Beni takip etmenizi tavsiye ediyorum ;)

 

İyi Günler Dilerim

 

İbrahim Ersoy

 

Etiketler : XNA WPF Windows Forms
Kategoriler : Kişisel Microsoft XNA
Yorumlar : 0 Yorum Yorum Yaz




BizTalk Server 2009 kurduktan sonra Visual Studio 2008 imizi açıyoruz.Yeni bir BizTalk Projesi oluşturuyoruz.Şekilde görüldüğü üzere:

 



Proje oluşturulduktan sonra görüntü aşağıdaki gibi oluyor.

 

Şimdi sırada projemize bir ORCHESTRATION eklemede...


ORCHESTRATION ne demektir,kısaca açıklayalım.ORCHESTRATION bir projede BizTalk ile konuşan programdır.Yazacağınız uygulamalar ORCHESTRATION sayesinde birbirleriyle konuşurlar.ORCHESTRATION da herhangi bir kodlama yapılmamaktadır.Çünkü herşey aslında grafikseldir...

Projemize yeni bir Orchestration dosyası ekleyerek ne hakkında konuştuğumuzdan bahsedelim:



Orchestration dosyamızı oluşturmuş bulunmaktayız.Orchestration dosyamız bir grafiksel arabirimde açılacaktır.



2 adet Port Surface bulunmaktadır.Sol taraftakinde genellikle Gönderilen(Send Port),sağ taraftaki Port Surface de ise genellikle Alınan(Receive Port) kullanılması tercih edilmektedir.İsterseniz yönleri tersine çevirip sol da Receive Portları sağ da Send Portları kullanabilir isterseniz her iki port u da Tek Surface de beraber kullanabilirsiniz,ancak kafanızın karışmaması için Sol da Send Port sağ da Receive Port kullanılması yeterli olacaktır.

Bu konuyu da açıkladıktan sonra Projemize bir “Message” ekleyelim.



Identifier e bir .NET uygulamasında nesnelere verdiğiniz “Name” veya “ID”  özelliği gibi düşünebilirsiniz.MessageType ise bu demo muzda XML tabanlı bir mesaj göndereceğimizden ötürü “System.Xml.XmlDocument” olarak atanmıştır.

Devam edelim ve yeni bir Port nesnesi oluşturalım.

 

  

New One-Way Port Type ı seçerek Portumuzu oluşturduk,ismini aşağıda gördüğünüz gibi değiştirebilirsiniz.



Şimdi de Operation_1 adındaki Ağaç yapısına tıklayarak OrnekPortType ı genişletiyoruz...

 

Receive adlı Name özelliğini “Portumuz” olarak değiştirdim.MessageType özelliğini de Message ımız hangi tipte ise onunla aynı yaptım.


Şimdi de sırada Orchestration grafiğimize Send ve Receive Port ları eklemede.

Toolbox dan Port nesnesini seçip:

 

Grafiğin üzerine taşıyınız.Karşınıza Port Configuration Wizard(Port Ayarlama Sihirbazı).Burada Send ve Receive Portlarımızı oluşturacağız.O halde devam edelim:



Next e basarak devam ediyoruz.



Burada ilk önce Receive Port umuzun adını girelim:ALPort ismini giriyoruz.

Ardından Use an existing Port Type seçeneği seçiyoruz:



OrnekPortType adlı daha önceden oluşturduğumuz PortTipi nesnemizi seçiyoruz.



Port Binding ekranı geliyor.Bu ekranda da şekilde gördüğünüz gibi ayarlıyorsunuz.Sonraki ekranda da Sihirbazı sonlandırıyoruz.Şimdi de aynı işlemi SendPort için yapacağız.Sadece Giriş Ekranında Port ismi yerine GONDERPort yazacağız.Geri kalan herşey yukarıdaki işlemler ile aynı olacak.

 

Orchestration dosyamızın görüntüsü aşağıdaki gibi olacaktır:

 

 

GonderPort ve ALPort un Özelliklerini de paylaşalım:

GONDERPort:



ALPort:



Ve son olarak projemize Send ve Receive Shape ler ekleyeceğiz...



İlk önce Receive sonra da Send Shape lerimizi Orchestration grafiğindeki Yeşil ve Kırmızı şeklin arasındaki yazının üzerine taşıyoruz.

  

Receive Shape Özellikleri:


Send Shape Özellikleri:

 

Şu aşamadan sonra Orchestration dosyamız şöyle görünecektir...

  


Receive Shape(Receive_1) ile ReceivePort(ALPort) un ve SendShape(Send_1) ile SendPort(GONDERPort) un birbirleriyle ilişkilendirildikleriniz göreceksinizdir...

 

Şimdi de Visual Studio Projemizde geriye kalan yapılması gereken işleri tamamlayalım...

ASSEMBLY ye Strong Name vermek:

Bunu yapmak için Proje Özelliklerine girip Signing kısmında:



Şeklinde kendinize göre bir Strong Name oluşturmanız gerekmektedir...

BizTalk da derlenen proje dosyası DLL tipinde olduğundan ötürü GAC(Global Assembly Cache) ye kaydedilecektir.Bu sebepten ötürü Strong Name oluşturduk.

 

Projemizi derliyoruz:

 

Demek ki Proje başarıyla derlenmiş ve GAC ye kayıt edilmiştir.Şimdi yapacağımız işlemlerin hepsi BizTalk Administration Console üzerinden olacaktır...

Yazının 2.bölümünde BizTalk uygulamamızı nasıl çalıştıracağımızdan bahsedecek ve sonuçlarını göreceğiz...


Görüşmek Üzere

Microsoft Student Partner’ler tarafından gerçekleştirilen Ocak ayı etkinliğinde Gizem Gülşen 21 Ocak günü saat 20.00’de Mobile Development webineri verecektir.

Oturuma katılmak için:

1. Eğer yüklü değilse
http://office.microsoft.com/search/redir.aspx?AssetID=XT102227921033&CTT=5&Origin=HA101733831033 adresinden LiveMeeting Programının kurulumunu indirin.

2. Program indikten sonra setup'ı çalıştırarak programı yükleyin.

3. Office Live Meeting'i çalıştırdıktan sonra açılan penceredeki "Location" kutucuğuna webiner günü burada yayınlanan bağlantı kodunu girin.

4. Ardından Join'e basın.

5. Karşınıza adınızı soran bir kutucuk gelcektir, oraya adınızı girdikten sonra yeninden Join'e basmanız webinere bağlanmanız için yeterli. 
 
6. http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032440662&Culture=TR-TR
 linkine online Kayıt diyerek. Etkinliğe Live ID’nizle (Hotmail, MSN, XBox hesabınız) kayıt olmanız gerekiyor.

7. Daha sonra adresinize gelen bağlantı sağlayıcıyı kullanarak web seminerine katılabilirsiniz.
 

Bu webinerde :

Mobile Cihazların Hayatımızdaki Yeri, Microsoft Mobile Teknolojilerinin, Geliştirme Araçlarının örneklerle anlatılması ve Microsoft Tag’den bahsedilecektir.

İlginizi Bekliyoruz.
Etiketler : Webiner
Kategoriler : Microsoft MSP
Yorumlar : 0 Yorum Yorum Yaz
Sayfalar
Tag Bulutu
Dil Seçin
Arama
  Ara