Появилась задача сделать выделение областей мышкой на форме. пробовал множество способов — у всех (кроме 1) при каждом движении курсора всё (или только линии выделения) безбожно мигает. Да и не смог нагуглить как в GDI+/c# выводить графику в реал-тайме.
Пытался глянуть исходники Paint.NET (где всё реализовано плавно и красиво), но там всё так запутано что неделя на разбор потребуется.
Нужно обновлять вывод при каждом движении мыши если левая кнопка зажата.
Способ приведённый ниже не мерцает но есть потребность в очистке от прошлых линий.
gr.Clear(Color.Transparent);
делает всё чёррным. как решить?
protected override void OnMouseMove(MouseEventArgs e)
{
m_LastMouseLocation = e.Location;
if (m_InChoosing)
{
Graphics gr = this.CreateGraphics();
Pen p = new Pen(new SolidBrush(Color.Black), 0.1f);
gr.DrawLine(p, m_ChooseBegPos, new Point(m_ChooseBegPos.X, m_LastMouseLocation.Y));
gr.DrawLine(p, m_ChooseBegPos, new Point(m_LastMouseLocation.X, m_ChooseBegPos.Y));
gr.DrawLine(p, new Point(m_ChooseBegPos.X, m_LastMouseLocation.Y), m_LastMouseLocation);
gr.DrawLine(p, new Point(m_LastMouseLocation.X, m_ChooseBegPos.Y), m_LastMouseLocation);
//base.Invalidate(new Rectangle(m_LastMouseLocation, new Size(1, 1)), false);
}
base.OnMouseMove(e);
}
P.S. в Paint.NET видел, используются методы со словом Transform в Graphics.
может тут как-то можно их применить?
14.12.10 07:22: Перенесено из '.NET'