Функция для рисования на picturebox - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите как мне написать функцию чтобы при её вызове рисовалось изображение на пикчербоксе ,проблема в том ,что пишу Морской бой...щас сделал этап,где кликая по пиечербоксу,на котором сетка(10,10) рисует в клетке крест,но при рисовании следующего креста предыдущий стирается так как код креста и самого поля записан так
Листинг программы
  1. private void pictureBox1_Paint(object sender, PaintEventArgs e)
  2. {
  3. Graphics gr = e.Graphics;
  4. Pen pen = new Pen(Color.Blue, 2);
  5. gr.DrawLine(pen, 0, 0, 200, 0);
  6. gr.DrawLine(pen, 0, 20, 200, 20);
  7. gr.DrawLine(pen, 0, 40, 200, 40);
  8. gr.DrawLine(pen, 0, 60, 200, 60);
  9. gr.DrawLine(pen, 0, 80, 200, 80);
  10. gr.DrawLine(pen, 0, 100, 200, 100);
  11. gr.DrawLine(pen, 0, 120, 200, 120);
  12. gr.DrawLine(pen, 0, 140, 200, 140);
  13. gr.DrawLine(pen, 0, 160, 200, 160);
  14. gr.DrawLine(pen, 0, 180, 200, 180);
  15. gr.DrawLine(pen, 0, 200, 200, 200);
  16. gr.DrawLine(pen, 0, 0, 0, 200);
  17. gr.DrawLine(pen, 20, 0, 20, 200);
  18. gr.DrawLine(pen, 40, 0, 40, 200);
  19. gr.DrawLine(pen, 60, 0, 60, 200);
  20. gr.DrawLine(pen, 80, 0, 80, 200);
  21. gr.DrawLine(pen, 100, 0, 100, 200);
  22. gr.DrawLine(pen, 120, 0, 120, 200);
  23. gr.DrawLine(pen, 140, 0, 140, 200);
  24. gr.DrawLine(pen, 160, 0, 160, 200);
  25. gr.DrawLine(pen, 180, 0, 180, 200);
  26. gr.DrawLine(pen, 200, 0, 200, 200);
  27. gr.DrawLine(pen, Convert.ToInt32(x1), Convert.ToInt32(y1), Convert.ToInt32(x1) + 20, Convert.ToInt32(y1) + 20);
  28. gr.DrawLine(pen, Convert.ToInt32(x1), Convert.ToInt32(y1) + 20, Convert.ToInt32(x1) + 20, Convert.ToInt32(y1));
  29. }
я понимаю что он он обновляет пикчербокс,но как сделать чтобы он дополнял а не обновлял

Решение задачи: «Функция для рисования на picturebox»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace _1921
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         public Form1()
  15.         {
  16.             InitializeComponent();
  17.             bt = new Bitmap(pictureBox1.Width, pictureBox1.Height);
  18.             gr = Graphics.FromImage(bt);
  19.             pictureBox1.Image = bt;
  20.         }
  21.         Bitmap bt; Graphics gr; Pen pn;
  22.         private void DravGrid()
  23.         {
  24.             pn = new Pen(Color.Blue);
  25.             for (int i = 0; i < pictureBox1.Width; i += 25)
  26.                 gr.DrawLine(pn, i, 0, i, pictureBox1.Height);
  27.             for (int i = 0; i < pictureBox1.Height; i += 25)
  28.                 gr.DrawLine(pn, 0, i, pictureBox1.Width, i);
  29.  
  30.         }
  31.         private void SetPoint(int x, int y)
  32.         {
  33.             pn = new Pen(Color.Black);
  34.             int koll = 0;
  35.             for (int i = 0; koll < x; i++)
  36.                 koll += 25;
  37.             x = koll - 25;
  38.             koll = 0;
  39.             for (int i = 0; koll < y; i++)
  40.                 koll += 25;
  41.             y = koll - 25;
  42.             gr.DrawLine(pn, x, y, x + 25, y + 25);
  43.             gr.DrawLine(pn, x + 25, y, x, y + 25);
  44.  
  45.         }
  46.         private void Form1_Load(object sender, EventArgs e)
  47.         {
  48.             DravGrid();
  49.             pictureBox1.Invalidate();
  50.         }
  51.  
  52.         private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
  53.         {
  54.             DravGrid();
  55.             Point pt = new Point(e.X, e.Y);
  56.             pn = new Pen(Color.Blue);
  57.             SetPoint(pt.X, pt.Y);
  58.             pictureBox1.Invalidate();
  59.         }
  60.     }
  61. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы