Úvod HTML CSS PHP MySQL JavaScript
Kreslení na picBox

PictureBox

Pro vložení obrázku do formu se používá prvek PictireBox. Pro jeden nebo dva obrázky stačí. V případě, že potřebujeme vykreslit něco náročnějšího, využijeme Graphics. Na formulář umístíme jeden PictureBox a na jeho plátno budeme vykreslovat to, co potřebujeme. Tento příklad je z webu itnetwork.cz, který byl super, než začaly články zpřístupňovat za body nebo peníze.
Form:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Editor_bludiště
{
      public partial class  FormEditor :  Form  
    {

         Mapa mapa;

          public FormEditor()
        {
            InitializeComponent();
            mapa = new Mapa(16, 16);
        }

        private void mapaPictureBox_Paint(object sender, PaintEventArgs e)
        {
            mapa.Vykresli(e.Graphics, Convert.ToInt32(numericUpDown1.Value));
        }
        private void prekresliMapu()
        {
            mapaPictureBox.Size = new Size(mapa.Sirka * Convert.ToInt32(numericUpDown1.Value) + 1, mapa.Vyska * Convert.ToInt32(numericUpDown1.Value) + 1);
            mapaPictureBox.Refresh();
        }

        private void FormEditor_Load(object sender, EventArgs e)
        {
            prekresliMapu();
            comboBox1.SelectedIndex = 0;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            prekresliMapu();
        }

        private void mapaPictureBox_MouseClick(object sender, MouseEventArgs e)
        {
            int hrana = Convert.ToInt32(numericUpDown1.Value);
            int x = e.X / hrana;
            int y = e.Y / hrana;
            // Hodnoty v pořadí, jako jsou popisky políček v ComboBoxu  
            int[] hodnoty = { 1, 99, 100, 0 };

            // Kontrola správnosti souřadnic 
            if ((x >= 0) && (y >= 0) && (x < mapa.Sirka) && (y < mapa.Vyska))
            {
                // Levé myšítko přidá zeď   
                if (e.Button == MouseButtons.Left)
                    mapa.policka[x, y] = hodnoty[comboBox1.SelectedIndex];
                // Pravé myšítko vymaže zeď  
                if (e.Button == MouseButtons.Right)
                    mapa.policka[x, y] = 0;
                prekresliMapu();
            }
        }

       
        private void oProgramuToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Editor k tutoriálu na 3D bludiště v C# XNA z programátorské sociální sítě www.devbook.cz");
        }
    
    }
}

    

Třída Mapa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;


namespace Editor_bludiště
{
    public class Mapa   
    {
        public int[,] policka;

        public int Sirka
        {
            get { return policka.GetLength(0); }
        }

        public int Vyska
        {
            get{ return policka.GetLength(1); }
        }


       public Mapa(int sirka, int vyska)
        {
            policka = new int[sirka, vyska];
        }

        public void Vykresli(Graphics g, int hrana)
        {
             // mřížka  
              for (  int j = 0; j <= Vyska; j++)
            {
                  for (  int i = 0; i <= Sirka; i++)
                {
                    g.DrawLine(Pens.Gray,   new Point(0, j * hrana),   new Point(Sirka * hrana - 1, j * hrana)); // -
                    g.DrawLine(Pens.Gray,   new Point(i * hrana, 0),   new Point(i * hrana, Vyska * hrana - 1)); // |
                }
            }

             // Políčka 
              for (  int j = 0; j < Vyska; j++)
            {
                  for (  int i = 0; i < Sirka; i++)
                {
                      switch (policka[i, j])
                    {
                         // Zeď  
                          case 1:
                            g.FillRectangle(Brushes.CornflowerBlue, i * hrana, j * hrana, hrana, hrana);
                               break;
                         // Start  
                          cas 99:
                            g.FillEllipse(Brushes.GreenYellow, i * hrana, j * hrana, hrana, hrana);
                            g.DrawString("S",    new Font("Arial", hrana / 2), Brushes.Green, i * hrana + (hrana / 6), j * hrana + (hrana / 6));
                               break;
                         // Cíl   
                          case 100:
                            g.FillEllipse(Brushes.Purple, i * hrana, j * hrana, hrana, hrana);
                            g.DrawString("C",    new Font("Arial", hrana / 2), Brushes.Red, i * hrana + (hrana / 6), j * hrana + (hrana / 6));
                               break;
                    }
                }
            }
        }

    }
}

    
PictureBox
pravy Ascii tabulka
Barvy
Klávesové zkratky


©2013-2021 Trojklik.8u.cz Autor: Vašek D.