C# programok ismertetése érdeklődőknek kezdőktől haladókig

C# MŰHELY

C# MŰHELY

GRAFIKA: Két képes animáció

2020. július 28. - Benkő Tiborné

Írjunk programot, amely két kép felváltott mozgatásával animációt hoz létre.

A feladat megoldása

 A pictureBox1 Image mezejébe a Select Resource ablakból a kép1 (.jpg) képet és a pictureBox2 vezérlő  Image mezejébe pedig a  kép2 képet választjuk ki.

A Toolbox listából a Components fejléc alatt a Timer ikonon kattintva timer1  objektum jelenik meg a szerkesztői felület bal alsó sarkában és ezen kattintva jön létre timer1_Tick eseménykezelő, amely váltogatva jeleníti meg a két képet a true és a false ellenkezőre való állításával a ! jellel.

Form1_Load eseménykezelőben, amely elsőnek és csak egyszer kerül meghívásra, beállítjuk, hogy a kép1 legyen látható  (true) és a kép2 pedig nem (false). Gondolkodunk arról, hogy a  pictureBox2  vegye fel pictureBox1 helyzetét (Location) és a méretét (Size), ahol a kép1 van, hogy a két kép azonos síkon mozogjon.

A kép alján lévő címkében megjelenő szövegnek választunk betűstílust és betűméretet, valamint középre helyezzük a Form1 ablakban.            

        private void timer1_Tick(object sender, EventArgs e)
        {
            pictureBox1.Visible = !pictureBox1.Visible;
            pictureBox2.Visible = !pictureBox2.Visible;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Visible = true// látható
            pictureBox2.Visible = false // nem látható
            pictureBox2.Location = pictureBox1.Location;
            pictureBox2.Size = pictureBox1.Size;
            label1.Text = "2-képes animáció";
            label1.BackColor = SystemColors.GradientInactiveCaption;
            label1.Font = new Font("Sans Serif", 8, FontStyle.Bold);
            // vízszintesen középre helyezzük a címkét:
            label1.Left = this.ClientSize.Width / 2
                               - label1.Width / 2;
        }

A program futási eredményei:

     

GRAFIKA: Billentyűk kezelése

Írjunk programot,amely az A betű leütésére sárgára, B betű leütésére zöldre, 1 leütésére tűrkizre, az Enter leütésére pirosra festi ki a négyzetet.

Számkarakter elé D betűt kell tenni, így 1 esetén a case mellett Key.D1 szerepel .

A feladat megoldása

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
           int x = 50, y = 40, m = 100;
           Pen p = new Pen(Color.Blue, 2);
           Graphics g = this.CreateGraphics();
           Rectangle t = new Rectangle(new Point(x,y),new Size(m,m));
           switch (e.KeyCode)
           {
               case Keys.A:
                    g.DrawRectangle(p, t);
                    g.FillRectangle(Brushes.Yellow, t);
                    label1.Text = "A betű leütése: sárga";break;
               case Keys.B:
                    g.DrawRectangle(p, t);
                    g.FillRectangle(Brushes.Green, t);
                    label1.Text = "B betű leütése: zöld";break;
               case Keys.Enter:
                    g.DrawRectangle(p, t);
                    g.FillRectangle(Brushes.Red, t);
                    label1.Text = "Enter leütése: piros";break;
              case Keys.D1:
                    g.DrawRectangle(p, t);
                    g.FillRectangle(Brushes.Cyan, t);
                    label1.Text = "1 leütése: tűrkíz";break; 
            }
        }

A program futási eredményei:

    

    

GRAFIKA: Kép megjelenítése DrawImage használatával

Írjunk programot, amely képet jelenít meg DrawImage haszálatával. A kép a program főkönyvtárában van.

A feladat megoldása

          private Image kep1 = new Bitmap("..\\..\\..\\axi22.jpg");
       private void button1_Click(object sender, EventArgs e)
       {
           Graphics g = this.CreateGraphics();
           g.DrawImage(kep1, new Point(20, 25));
       }

A program futási képe:

GRAFIKA: Kép megjelenítésénél SizeMode használata

Írjunk programot. amely a képmegjelenítésnél bemutatja a SizeMode beállításait. 

 A feladat megoldása

Három képet jelenítünk meg, ahol az alábbi beállításokat használtuk a tervezésnél:

               pictureBox1   SizeMode  StretchImage

               pictureBox2   SizeMode  CenterImage

               pictureBox3   SizeMode  Zoom

A program listája:

                 private void button1_Click(object sender, EventArgs e)
        {
             pictureBox1.Load("..\\..\\..\\kep1.bmp");
        }

        private void button2_Click(object sender, EventArgs e)
        {
             pictureBox2.Load("..\\..\\..\\kep1.bmp");
        }

        private void button3_Click(object sender, EventArgs e)
        {
              pictureBox3.Load("..\\..\\..\\kep1.bmp");
        }

 A program futási eredménye:

GRAFIKA: Véletlen színek generálása

Írjunk programot, amely színek előállításához az R G B értékeit vélelenszám generátorral állítja elő.

 A feladat megoldása     

        private void button1_Click(object sender, EventArgs e)
        {
            Random m = new Random();
            int szinR, szinG, szinB;
            szinR = m.Next(256);
            szinG = m.Next(256);
            szinB = m.Next(256);
            Graphics g = this.CreateGraphics();
            Rectangle t = new Rectangle(new Point(105, 55),
                                        new Size(80, 80));
            SolidBrush b = new SolidBrush(
                              Color.FromArgb(szinR, szinG,szinB));
            g.FillRectangle(b,t);
            textBox1.Text = szinR.ToString();
            textBox2.Text = szinG.ToString();
            textBox3.Text = szinB.ToString();
        }

A program futási eredményei:

GRAFIKA: Kiválasztott kép megjelenítése

Írjunk programot, amely a kiválasztott képet külön Form felületén jeleníti meg.

A feladat megoldása

                         private void Form1_Load(object sender, EventArgs e)
        {
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
        }

        private void radioButton1_CheckedChanged(object sender,
                                                 EventArgs e)
        {
             if (radioButton1.Checked)
                 new Form2().ShowDialog();
        }

        private void radioButton2_CheckedChanged(object sender,
                                                 EventArgs e)
        {
              if (radioButton2.Checked);
                  new Form3().ShowDialog();
        }

        private void radioButton3_CheckedChanged(object sender,
                                                 EventArgs e)
        {
             if (radioButton3.Checked)
                 new Form4( ).ShowDialog();
        }

        private void radioButton4_CheckedChanged(object sender,
                                                 EventArgs e)
        {
             if (radioButton4.Checked)
                 new Form5().ShowDialog();
        }

        public Form2()
        {
             InitializeComponent();
        }

        public Form3()
        {
             InitializeComponent();
        }

        public Form4()
        {
             InitializeComponent();
        }

        public Form5()
        {
             InitializeComponent();
        }

A program futási eredményei:

 

 

GRAFIKA: Késleltetés bemutatása

Írjunk programot, amely bemutatja késleltetés használatát, ha lelelt a beállított késleltetés (Sleep(5000)), akkor a címke háttere piros, kék, zöld, majd sárga lesz és Üzenet ablakban jelzi a késleltetések végét.

A feladat megoldása

        using System.Threading; 

        private void Start_Click(object sender, EventArgs e)
        {
            label1.BackColor = Color.Red; 
            label1.Refresh();
            Thread.Sleep(5000);
            label1.BackColor = Color.Blue;
            label1.Refresh();
            Thread.Sleep(5000);
            label1.BackColor = Color.Green;
            label1.Refresh();
            Thread.Sleep(5000);
            label1.BackColor = Color.Yellow;
            label1.Refresh();
            MessageBox.Show("Késleltetés befejezése","Figyelem");
       }

A program futási eredményei:

 

Utolsó színváltás.

     

 

 

 

 

GRAFIKA: Egér kurzorok és saját kurzor bemutatása

Írjunk programot, amely megjeleníti a kurzorokat a megfelelő nyomógombon kattintva, valamint a SAJÁT gombon kattintva a saját kurzort is bemutatja (egér1.cur).

A feladat megoldása

        private Cursor eger1 = new Cursor("..\\..\\..\\eger1.cur");

        private void AppStaring_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.AppStarting;
        }

        private void Arrow_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.Arrow;
        }

        private void Cross_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.Cross;
        }

        private void Default_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.Default;
        }

        private void IBeam_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.IBeam;
        }

        private void SizeAll_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.SizeAll;
        }

        private void SizeNESW_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.SizeNESW;
        }

        private void SizeNS_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.SizeNS;
        }

        private void SizeWE_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.SizeWE;
        }

        private void UpArrow_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.UpArrow;
        }

        private void WaitCursor_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.WaitCursor;
        }

        private void Help_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.Help;
        }

        private void Hand_Click(object sender, EventArgs e)
        {
             this.Cursor = Cursors.Hand;
        }

        private void Sajat_Click(object sender, EventArgs e)
        {
             this.Cursor = eger1;
        }

       A program futási eredménye:

GRAFIKA: Rajzolás egér használatával

 Írjunk programot, amely az egérgomb lenyomásával 15x15 pixeles világoskék (Aqua) színnel befestett kört rajzol. A egér felemelésekor 12x20 pixeles kék színnel befestett ellipszist rajzol. Az egér mozgatásánál 4x4 pixeles rózsaszín (Coral) színű befestett kört rajzol.

 A feladat megoldása:

        private Rectangle rDown = new Rectangle(new Point(0, 0),
                                                new Size(15, 15));
        private Rectangle rUp = new Rectangle(new Point(0, 0),
                                                new Size(12, 20));
        private Rectangle rMove = new Rectangle(new Point(0, 0),
                                                new Size(4, 4));

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            rDown.X = e.X;
            rDown.Y = e.Y;
            g.FillEllipse(Brushes.Aqua, rDown);
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            rUp.X = e.X;
            rUp.Y = e.Y;
            g.FillEllipse(Brushes.Blue, rUp);
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            rMove.X = e.X;
            rMove.Y = e.Y;
            g.FillRectangle(Brushes.Coral, rMove);
        }

 A program futási eredménye:

GRAFIKA: Végtelen RBG generálása

Írjunk programot, amelynek az egyik nyomógombja elindít egy végtelen R G B generálást, a másik nyomógombja leállítja a generálást, így a Form felülete az utolsó generált színnel kerül kifestésre. A programból egy harmadik nyomógomb megnyomásával lépjen ki.

A feladat megoldása  

          private Brush brush = null;
        private bool stop = false;
        private Random rnd = new Random();
        private Color color

        // Start nyomógomb megnyomására indul a színek generálása
        private void Start_Click(object sender, EventArgs e)
        {
            Stop1.Focus();
            while (!stop)
            {
                color = Color.FromArgb(rnd.Next(256), rnd.Next(256),
                                       rnd.Next(256));
                Application.DoEvents();
            }

            // a stop változó true értékre állítása teszi lehetővé,
            // hogy a Form felülete az utolsó generált színre
            // lesz átfestve

            brush = new SolidBrush(color);
            Graphics g = CreateGraphics();
            g.FillRectangle(brush, this.ClientRectangle);
            stop = false;
         }

        // Stop nyomógomb megnyomása a stop változót true értékre
        // állítja

        private void Stop1_Click(object sender, EventArgs e)
        {
            stop = true;
            Stop1.Focus();
        }

        // Kilépés a programból
        private void Kilépés_Click(object sender, EventArgs e)
        {
             Application.Exit();
        }

A program futási eredménye:

 

 

süti beállítások módosítása