na zacatek tridy Pen p; Brush b; na konec konstruktoru p = new Pen (panel1.BackColor); b = new SolidBrush (panel1.BackColor); na konec newColorMenuItem_Click p = new Pen(t.BackColor); upravit pictureBox_MouseMove /* Brush b = new LinearGradientBrush(new Point(0, 0), new Point(100, 100), Color.Red, Color.Blue); */ g.FillEllipse (b, X0, Y0, X1 - X0, Y1 - Y0); g.DrawEllipse (p, X0, Y0, X1 - X0, Y1 - Y0); upravit panel1_MouseDown colorDialog1.Color = t.BackColor; if (colorDialog1.ShowDialog() == DialogResult.OK) { t.BackColor = colorDialog1.Color; p = new Pen(t.BackColor); } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace kresleni { public partial class MyWindow : Form { int X0, Y0; bool s = false; Bitmap save = null; Pen p; Brush b; int cnt = 1; public MyWindow() { InitializeComponent(); pictureBox_SizeChanged(null, null); p = new Pen (panel1.BackColor); b = new SolidBrush (panel1.BackColor); } private void newColorMenuItem_Click(object sender, EventArgs e) { Panel t = new Panel(); t.Parent = toolPanel; // toolPanel.Controls.Add (t); t.BackColor = Color.CornflowerBlue; cnt++; t.Left = cnt * panel1.Left + (cnt - 1) * panel1.Width; t.Top = panel1.Top; t.Width = panel1.Width; t.Height = panel1.Height; t.MouseDown += panel1_MouseDown; p = new Pen(t.BackColor); } private void panel1_MouseDown(object sender, MouseEventArgs e) { Control t = (Control) sender; if (e.Button == MouseButtons.Middle) { colorDialog1.Color = t.BackColor; if (colorDialog1.ShowDialog() == DialogResult.OK) { t.BackColor = colorDialog1.Color; p = new Pen(t.BackColor); } } else if (e.Button == MouseButtons.Left) { p = new Pen (t.BackColor); } else if (e.Button == MouseButtons.Right) { b = new SolidBrush (t.BackColor); } } private void pictureBox_MouseDown(object sender, MouseEventArgs e) { X0 = e.X; Y0 = e.Y; s = true; save = new Bitmap (pictureBox.Image); } private void pictureBox_MouseMove(object sender, MouseEventArgs e) { if (s) { Graphics g = Graphics.FromImage(pictureBox.Image); g.DrawImage (save, 0, 0); // Pen p = new Pen(Color.Red); // g.DrawLine(p, X0, Y0, e.X, e.Y); int X1 = e.X; int Y1 = e.Y; if (X1 < X0) { int t = X0; X0 = X1; X1 = t; } if (Y1 < Y0) { int t = Y0; Y0 = Y1; Y1 = t; } /* Brush b = new LinearGradientBrush(new Point(0, 0), new Point(100, 100), Color.Red, Color.Blue); */ g.FillEllipse (b, X0, Y0, X1 - X0, Y1 - Y0); g.DrawEllipse (p, X0, Y0, X1 - X0, Y1 - Y0); pictureBox.Invalidate(); } } private void pictureBox_MouseUp(object sender, MouseEventArgs e) { s = false; /* int X1 = e.X; int Y1 = e.Y; if (X1 < X0) { int t = X0; X0 = X1; X1 = t; } if (Y1 < Y0) { int t = Y0; Y0 = Y1; Y1 = t; } // g.DrawRectangle(p, X0, Y0, X1 - X0, Y1 - Y0); // using System.Drawing.Drawing2D; Brush b = new SolidBrush(Color.Yellow); b = new HatchBrush(HatchStyle.Cross, Color.Blue, Color.Yellow); b = new LinearGradientBrush (new Point(0, 0), new Point(100, 100), Color.Red, Color.Blue); g.FillEllipse (b, X0, Y0, X1 - X0, Y1 - Y0); g.DrawEllipse (p, X0, Y0, X1 - X0, Y1 - Y0); */ } private void pictureBox_SizeChanged(object sender, EventArgs e) { int w = pictureBox.Width; int h = pictureBox.Height; Image old = pictureBox.Image; int w0 = (old == null) ? 0 : old.Width; int h0 = 0; if (old != null) h0 = old.Width; w = Math.Max(w, w0); h = Math.Max(h, h0); pictureBox.Image = new Bitmap(w, h); Graphics g = Graphics.FromImage(pictureBox.Image); Brush b = new SolidBrush(Color.White); g.FillRectangle(b, 0, 0, w, h); if (old != null) g.DrawImage(old, 0, 0); } private void exitMenuItem_Click(object sender, EventArgs e) { Close(); } } }