首先,我需要在加载到PictureBox控件的单色输入图像上制作一些颜色涂鸦(下面的图片来自M. Yang关于静止图像着色的文章)。在PictureBox中画线
我想用这个来得到的效果:
private void PictureBoxOnMouseDown(Object sender, MouseEventArgs e)
{
if((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
this.MouseInitialPosition = e.Location;
}
}
private void PictureBoxOnMouseMove(Object sender, MouseEventArgs e)
{
if((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
this.MouseLastPosition = e.Location;
}
this._PictureBox.Invalidate();
}
private void PictureBoxOnPaint(Object sender, PaintEventArgs e)
{
using(var pen = new Pen(Color.Red, 3.0F))
{
e.Graphics.DrawLine(pen, this.MouseInitialPosition, this.MouseLastPosition);
}
}
但是,这让我不太我一直在等待:
我可以不要放几条线。线路不存储;
我用行覆盖行;
二。我需要从我已经绘制的图像中获取所有像素,并以某种方式对其进行过滤(即,提取特定的像素)。如何将线条/涂鸦存储到图像上然后有效地读取图像?
在拖动,你会产生很多鼠标移动事件。在此代码中,所有这些事件都会导致添加一行。经过一次拖拽后,您将在线条集合中获得很多线条,而每条线条需要一条线条。执行此操作的正确方法是在每次移动鼠标后添加该行,但在drag = mouse up事件结束时添加该行。 – 2015-12-30 13:04:16
@HaraldDutch,OP询问有关涂鸦而不是线条。 – 2015-12-30 20:53:58