@absoluteST

Как обработать изображение циклом?

Добрый день, есть лаба по созданию простого графического редактора, в которой есть задание с которым возникли трудности, нужно создать функцию которая добавляет на изображение 1000 точек с координатами, заданными случайным образом, цвет тоже задается случайно. Я нашёл готовую функцию, но возникли проблемы с её встраиванием в кнопку(button3), постоянные ошибки "не содержит определения". Прошу помощи.
Вот код функции:
Код функции
public Color RandColor(Random rand)
        {
            return Color.FromArgb(rand.Next(0, 256), rand.Next(0, 256), rand.Next(0, 256));
        }
        public float NextF(Random rand, float min, float max)
        {
            return min + (float)rand.NextDouble() * (max - min);
        }
        public void Draw1000(Bitmap bmp, float r = 1F)
        {
            Random rand = new Random();
            using (var g = Graphics.FromImage(bmp))
            {
                for (int i = 0; i < 1000; i++)
                {
                    using (var br = new SolidBrush(rand.RandColor()))
                    {
                        g.FillEllipse(br, rand.NextF(0, bmp.Width) - r, rand.NextF(0, bmp.Height) - r, 2 * r, 2 * r);
                    }
                }
            }
        }

Ошибки
607410ef58f12449577379.png

Код приложения
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp21
{
    public partial class Form1 : Form
    {
        private Point PreviousPoint, point;
        private Bitmap bmp;
        private Pen blackPen;
        private Graphics g;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            blackPen = new Pen(Color.Black, 4);
        }
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            PreviousPoint.X = e.X;
            PreviousPoint.Y = e.Y;
        }
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {   point.X = e.X;
                point.Y = e.Y;
                g.DrawLine(blackPen, PreviousPoint, point);
                PreviousPoint.X = point.X;
                PreviousPoint.Y = point.Y;
                pictureBox1.Invalidate();
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Image files (*.BMP, *.JPG, " + "*.GIF, *.PNG)|*.bmp;*.jpg;*.gif;*.png";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                Image image = Image.FromFile(dialog.FileName);
                int width = image.Width;
                int height = image.Height;
                pictureBox1.Width = width;
                pictureBox1.Height = height;
                bmp = new Bitmap(image, width, height);
                pictureBox1.Image = bmp;
                g = Graphics.FromImage(pictureBox1.Image);
            }
        }

        public Color RandColor(Random rand)
        {
            return Color.FromArgb(rand.Next(0, 256), rand.Next(0, 256), rand.Next(0, 256));
        }
        public float NextF(Random rand, float min, float max)
        {
            return min + (float)rand.NextDouble() * (max - min);
        }
        public void Draw1000(Bitmap bmp, float r = 1F)
        {
            Random rand = new Random();
            using (var g = Graphics.FromImage(bmp))
            {
                for (int i = 0; i < 1000; i++)
                {
                    using (var br = new SolidBrush(rand.RandColor()))
                    {
                        g.FillEllipse(br, rand.NextF(0, bmp.Width) - r, rand.NextF(0, bmp.Height) - r, 2 * r, 2 * r);
                    }
                }
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            SaveFileDialog savedialog = new SaveFileDialog();
            savedialog.Title = "Сохранить картинку как ...";
            savedialog.OverwritePrompt = true;
            savedialog.CheckPathExists = true;
            savedialog.Filter =
             "Bitmap File(*.bmp)|*.bmp|" + "GIF File(*.gif)|*.gif|" + "JPEG File(*.jpg)|*.jpg|" + "PNG File(*.png)|*.png"; 
            if (savedialog.ShowDialog() == DialogResult.OK)
            {
                string fileName = savedialog.FileName;
                string strFilExtn = fileName.Remove(0,
                fileName.Length - 3);
                switch (strFilExtn)
                {
                    case "bmp":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
                        break;
                    case "jpg":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case "gif":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif);
                        break;
                    case "tif":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff);
                        break;
                    case "png":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
                        break;
                    default:
                        break;
                }
            }
        }
    }
}
60741183d48db229781768.png
  • Вопрос задан
  • 376 просмотров
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Класс Random не имеет метода NextF, что вам в этой фразе не понятно?
Если же там кто-то хотел сделать надстройку над ним, то должно быть
public float NextF(this Random rand, float min, float max)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы