我正在尝试在pictureBox中显示的图像上绘制一些内容。我正在使用事件处理程序进行鼠标活动:onMouseUp,onMouseMove和onMouseDown。
private void onMouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
private void onMouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
using (Graphics g = pictureBox.CreateGraphics())
{
g.FillEllipse(Brushes.Black, e.X - size, e.Y - size, size * 2, size * 2);
}
}
}
private void onMouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
using (Graphics g = pictureBox.CreateGraphics())
{
g.FillEllipse(Brushes.Black, e.X - size, e.Y - size, size * 2, size * 2); //just in case user just clicks instead of move the mouse
}
}
我正在尝试模拟当鼠标移动到pictureBox上时绘制指定大小(半径)圆的画笔工具。移动速度很慢但是当移动速度更快时,PictureBox似乎只捕获了一些事件,并且很多圈子被跳过而没有被绘制。特别是当半径很小时。
我该怎么做才能让它更快更顺畅?
答案 0 :(得分:3)
移动鼠标时,鼠标指针移动的每个像素都不会得到MouseMove
事件。您将以相当一致的时间间隔获得它们,因此鼠标移动得越快,您获得的点就越远。这个特别的细节你做不了多少。
您需要做的是存储最后一个接收点的位置,并在最后一个点和新点之间的每个点绘制一个椭圆。