# Zkouška 16. 2. 16:00

<{ForumPost(poster="Janoro", timestamp=2009-02-16 23:58:59)}>
Vezmu to zkrátka: Naprogramovat hru logik - pěkně s grafický rozhraním, barvičky se musí vykreslovat jako plné kruhy, uprostře nich číslo barvy, které označuje uživatel. Při hraní uživatel hádá barvy a každý jeho krok se zobrazuje v podobě jakési skrolovatelné historie nahoře ve Formu. Historie musí být zobrazitelná celá.  
  
Úspěšnost: 0 :-)
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-17 02:58:23)}>
Bylo povoleno pouzivat graficke navrhovatko?
<{/ForumPost}>

<{ForumPost(poster="SonicTh", timestamp=2009-02-17 10:03:50)}>
Bylo. Take bylo mozno si vybrat mezi WinForms a WPF.  
  
PJ
<{/ForumPost}>

<{ForumPost(poster="Donarus", timestamp=2009-02-17 14:00:26)}>
no pokud byla uspesnost 0 tak se nejak zvlast nedivim :)
<{/ForumPost}>

<{ForumPost(poster="Medved", timestamp=2009-02-18 00:44:44)}>
A v čem byl problém? Hrací plochu máte minimálně ve WPF hotovou za hodinu a algoritmicky to je prace na 10 minut, ne? Tak snad jen ta historie. Nakreslit elipsu a dovnitř jedno číslo hádám problém nebyl.
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-19 10:39:13)}>
A jak nakreslim tu elipsu s cislem ? :oops:
<{/ForumPost}>

<{ForumPost(poster="Medved", timestamp=2009-02-19 22:03:09)}>
Zvlast elipsu a zvlast to cislo. Ve WPF to vypada asi takhle  
  
<Canvas>  
  <Ellipse Canvas.Top="0" Canvas.Left="0" Width="5" Height="5" />  
  <Label Canvas.Top="0" Canvas.Left="0">1</Label>  
</Canvas>  
  
Akorat teda si to musis nejak pojmenovat a to cislo pak menit v kodu behind podle te barvy...
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-19 22:41:59)}>
A jak se to dela jen ve winforms ?
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-20 12:56:34)}>

 > Návštěvník wrote:A jak se to dela jen ve winforms ?

Napriklad takhle:  

 

           Font font = new Font(FontFamily.GenericSansSerif, 15f);
    
            public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y)
            {
                g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));
                g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));
            }

kde Graphics se se ziska z PaintEventArgs u Paint metody formu..
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-20 13:57:33)}>
A jak to reda presne zavolam ?

    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                nakresli_kolecko(//co mam sem napsat ?
            }
    
            Font font = new Font(FontFamily.GenericSansSerif, 15f);
    
            public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y)
            {
                g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));
                g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));
            }
        }
    }
    
    


<{/ForumPost}>

<{ForumPost(poster="svick", timestamp=2009-02-20 15:41:53)}>

 > Návštěvník wrote:A jak to reda presne zavolam ?

Musíš ji zavolat v event handleru na událot Paint. Třeba takhle:

    using System.Windows.Forms;
    using System.Drawing;
    
    namespace WinApp
    {class Form1 : Form{public Form1(){Paint += new PaintEventHandler(Form1_Paint);}
    void Form1_Paint(object sender, PaintEventArgs e){nakresli_kolecko(e.Graphics, Color.Blue, 5, 0, 0);}
    Font font = new Font(FontFamily.GenericSansSerif, 15f);
    public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y){g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));}
    static void Main(){Application.Run(new Form1());}}
    }
    


<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-20 16:12:11)}>
Diky.  
A jeste jak poznam podle
 

    string s = "Blue";
    

toho stringu ze mam pouzit Brushes.Blue ?  
A nemislym to delat podle switche. Protoze switchovat vsechny barvy se mi fakt nechce.
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-20 17:11:01)}>

 > Návštěvník wrote:Diky.  
 > A jeste jak poznam podle
 >  
 > 
 > 
 > 
 >     string s = "Blue";
 >     
 > 
 > 
 > 
 > 
 > toho stringu ze mam pouzit Brushes.Blue ?  
 > A nemislym to delat podle switche. Protoze switchovat vsechny barvy se mi fakt nechce.

Zkus pouzit metodu Color.FromName(s);
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-02-20 19:27:01)}>
Dekuji  :)
<{/ForumPost}>

