как нарисовать рисунки в поле изображения

Как уже было сказано, вы не можете распараллелить на уровне задачи или даже на целевом уровне. Только MSBuild будет строить проекты (т.е. файлы проектов MSBuild) параллельно. Поэтому вы должны использовать задачу MSBuild с указанием нескольких проектов, а для атрибута BuildInParallel должно быть установлено значение true. Также убедитесь, что при сборке из командной строки вызывается ключ / m.

Сайед Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: использование MSBuild и Team Foundation Build

7
задан user990423 22 September 2015 в 18:43
поделиться

2 ответа

Поместите PictureBox в форму и установите для него BackColor значение White. Затем добавьте этот код в свою форму (вы должны фактически подключить события мыши ниже, т.е. вы не можете просто скопировать и вставить этот код в свою форму):

private Point? _Previous = null;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    _Previous = e.Location;
    pictureBox1_MouseMove(sender, e);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (_Previous != null)
    {
        if (pictureBox1.Image == null)
        {
            Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.Clear(Color.White);
            }
            pictureBox1.Image = bmp;
        }
        using (Graphics g = Graphics.FromImage(pictureBox1.Image))
        {
            g.DrawLine(Pens.Black, _Previous.Value, e.Location);
        }
        pictureBox1.Invalidate();
        _Previous = e.Location;
    }
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    _Previous = null;
}

А затем отойдите!

Если хотите, вы можете несколько улучшить качество нарисованного изображения, установив свойство SmoothingMode объекта Graphics .

Обновление: .Net CF не имеет перьев Коллекция , а MoustEventArgs не имеет Location , поэтому вот версия с поддержкой CF:

private Point? _Previous = null;
private Pen _Pen = new Pen(Color.Black);
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    _Previous = new Point(e.X, e.Y);
    pictureBox1_MouseMove(sender, e);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (_Previous != null)
    {
        if (pictureBox1.Image == null)
        {
            Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.Clear(Color.White);
            }
            pictureBox1.Image = bmp;
        }
        using (Graphics g = Graphics.FromImage(pictureBox1.Image))
        {
            g.DrawLine(_Pen, _Previous.Value.X, _Previous.Value.Y, e.X, e.Y);
        }
        pictureBox1.Invalidate();
        _Previous = new Point(e.X, e.Y);
    }
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    _Previous = null;
}
21
ответ дан 6 December 2019 в 07:27
поделиться

Вы можете сделать это, зафиксировав событие mousemove графического окна, а затем получив графику из графического окна, например:

Графика g = pictureBox.CreateGraphics (); затем вы можете рисовать все, что хотите, используя этот графический объект

0
ответ дан 6 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

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