Рисование кистью в UserControl - PullRequest
0 голосов
/ 16 ноября 2011

Я пытаюсь нарисовать кистью на элементе управления UserControl.Я могу рисовать линии, круги и прямоугольники.Я не совсем понимаю, почему я не могу рисовать кистью.Код ниже дает мне указатель мыши на MouseDown, а затем он перемещается в положение, установленное в MouseUp.Во время MouseMove контент не рисуется.Я полагаю, что я не понимаю некоторые основные правила здесь.

Этот код работает для строк:

public override void Draw(Graphics graphics) {
  graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  graphics.DrawLine(new Pen(this.Color, this.PenSize), startPoint, endPoint);
}

Этот код я пытаюсь адаптировать для кисти:

public override void Draw(Graphics graphics) {
  if (this.bitmap != null) {
    graphics = Graphics.FromImage(this.bitmap);
    graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    graphics.DrawEllipse(new Pen(this.Color, this.PenSize), startPoint.X, startPoint.Y,
                         this.PenSize, this.PenSize);
    graphics.DrawImage(this.bitmap, 0, 0);
  }
}

Этот код перерисовывает список объектов:

private void UserControl_Paint(object sender, PaintEventArgs e) {
  if (ObjectsList != null) {
    ObjectsList.Draw(e.Graphics);
  }
}

Поскольку код представляет, я пытаюсь получить растровое изображение до и после точечного рисования линий.Должен ли я сделать это по-другому?

1 Ответ

2 голосов
/ 16 ноября 2011

Я не совсем понимаю ваш вопрос, но во втором коде они кажутся ошибкой.Возможно, вам стоит попробовать это:

public override void Draw(Graphics graphics)
{
    if (this.bitmap != null)
    {
        Graphics g = Graphics.FromImage(this.bitmap);
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        g.DrawEllipse(new Pen(this.Color, this.PenSize), startPoint.X, startPoint.Y, this.PenSize, this.PenSize);
        graphics.DrawImage(this.bitmap, 0, 0);
    }
}

В противном случае вы рисуете растровое изображение на самом растровом изображении.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...