Приветствие! Я работаю над проектом, где вы получили форму, где пользователь запрашивает определенное количество точек (от 1 до 10). Затем он рисует их на картинке с действием buttonclick, а затем пользователь может щелкнуть по любой точке, и линия между ними будет нарисована. До сих пор это выглядит следующим образом:C# Ссылка на форму
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.CreateGraphics().Clear(this.BackColor);
Random r = new Random();
int db = new int();
Graphics rl = pictureBox1.CreateGraphics();
db = Convert.ToInt32(textBox1.Text);
if (db > 0 && db < 11)
{
for (int i = 0; i < db; i++)
{
rl.FillRectangle(new SolidBrush(Color.Black), r.Next(4, pictureBox1.Width - 4), r.Next(4, pictureBox1.Height - 4), 5, 5);
}
}
else
{
MessageBox.Show("Wrong number!");
}
}
Это только рисует точку на форме и я хочу, чтобы сделать их связываемыми. Моя идея состоит в том, что я помещаю ее в растровое изображение, тогда я проверяю координаты x, y, и если цвет черный (что означает, что есть точка), я храню в точках 1 и 2, а затем просто делаю команду drawline следующим образом:
private bool first = false;
private void Picturebox_Mouse(object sender, MouseEventArgs e)
{
Bitmap bm = new Bitmap(pictureBox1.Image);
Color color = bm.GetPixel(e.X, e.Y);
if (color == Color.Black & first==false)
{
dot1.X = e.X;
dot1.Y = e.Y;
first = true;
}
if (color == Color.Black & first == true)
{
dot2.X = e.X;
dot2.Y = e.X;
first = false;
}
rl.DrawLine(new Pen(Color.Black), dot1, dot2);
}
Мой вопрос в том, что мой подход прекрасен или я должен по-другому? Также, если это может работать, как я помещаю содержимое изображения в растровое изображение? Я пытался рисовать точку в битовой карте diractly затем установка pictureboxs изображение точечного рисунка:
pictureBox1.DrawToBitmap(bm, new Rectangle(r.Next(0, pictureBox1.Width - 4), r.Next(0, pictureBox1.Height - 4), 5, 5));
pictureBox1.BackgroundImage = bm;
, а также я попытался отменить это так помещая содержимое в битовой карте:
Bitmap bm = new Bitmap(pictureBox1.Image);
, но его похоже, не работает. Могу ли я получить некоторые идеи, как это сделать? Любая идея Идея заявлена! Спасибо.
Проблема с вашим подходом заключается в том, что ваши пользователи должны быть предельно точны, щелкнув по пикселям, вам лучше сохранить список точек, а затем проверить, находится ли пользователь в любом месте рядом с любым из их (установите допуск). – Sayse