これまで行ってきたことです。私はコードを探していて、プログラムに戻してみました。しかし、それは全く機能しません。Unable Cで描画した行を削除するには、ピクチャボックスのバックスペースキーを使用してください。
public Form1()
{
InitializeComponent();
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
}
int originalX, originalY;
int startX, startY, endX, endY;
int pointX1, pointY1;
int pointX2, pointY2;
Graphics g;
int i = 0, j = 0;
Bitmap image;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
if (i == 0)
{
image = (Bitmap)pictureBox1.Image;
pictureBox1.Invalidate();
originalX = startX = e.X;
originalY = startY = e.Y;
g = Graphics.FromImage(image);
}
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
pictureBox1.Refresh();
g = pictureBox1.CreateGraphics();
if (j < 10000000)
{
if (i != 0 )
{
startX = pointX1;
startY = pointY1;
}
pointX2 = e.X;
pointY2 = e.Y;
g.DrawLine(Pens.Black, new Point(startX, startY), new Point(pointX2, pointY2));
j++;
}
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
g = Graphics.FromImage(image);
if (i <100000000)
{
if (i != 0)
{
startX = pointX1;
startY = pointY1;
}
pointX1 = e.X;
pointY1 = e.Y;
g.DrawLine(Pens.Black, new Point(startX, startY), new Point(pointX1, pointY1));
}
}
i++;
}
private void button2_Click(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(@"C:\Users\student03\Documents\image\Sky2.jpg");
}
private void pictureBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
g = Graphics.FromImage(image);
g.DrawLine(Pens.Black, new Point(pointX1, pointY1), new Point(originalX, originalY));
pictureBox1.Image = image;
i = 0;
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
pictureBox1.Invalidate();
}
ありがとうございました!それは完全に動作します!しかし、バックスペースを使い、私が描いた線を削除する方法があるようです。あなたもそれで私を助けてくれますか? –
@VernonPichu現在のところ、画面の外に描画情報を保存していないので、ほとんど不可能です。しかし、私は後でラインを削除するためにあなたがすべきことでこの答えを更新します。 –
ありがとうございます。確かに、私は図面上にデータを保存していないと理解しています。私を更新してください、本当に大きな助けに感謝します。 –