0
私のフォームには、ピクチャボックスがあります。私はイメージの上に矢印を描くことができるようにしたかったのです。私はそこに途中で入ることができた。フォームのロードイベントでは、画像をピクチャボックスに割り当てます。私は下のコードで矢印を作成することができます。問題は、フォームのロードイベントで割り当てられた画像が消去されるように矢印を作成するたびに発生します。なぜ画像が消去されるのですか?フォームの読み込み中に割り当てたイメージを、その上に矢印を描きながら維持するにはどうすればよいですか?絵の上に絵を描いている間にピクチャボックスイメージを保持する
private bool isMoving = false;
private Point mouseDownPosition = Point.Empty;
private Point mouseMovePosition = Point.Empty;
private List<Tuple<Point, Point>> lines = new List<Tuple<Point, Point>>();
Pen _Pen;
private void Test_Load(object sender, EventArgs e)
{
pictureBox1.Image = Properties.Resources.background;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (isMoving)
{
if (pictureBox1.Image == null)
{
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.White);
}
pictureBox1.Image = bmp;
}
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
g.Clear(pictureBox1.BackColor);
AdjustableArrowCap bigArrow = new AdjustableArrowCap(5, 5);
_Pen = new Pen(Color.IndianRed, 3);
_Pen.CustomEndCap = bigArrow;
g.DrawLine(_Pen, mouseDownPosition, mouseMovePosition);
_Pen.Dispose();
}
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
isMoving = true;
mouseDownPosition = e.Location;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (isMoving)
{
mouseMovePosition = e.Location;
pictureBox1.Invalidate();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (isMoving)
{
lines.Add(Tuple.Create(mouseDownPosition, mouseMovePosition));
}
isMoving = false;
}
私はこの問題は、ここでこのラインをg.Clear(pictureBox1.BackColor);
こんにちは桜を、これは働いていました。ありがとうございました!これは、背景画像を保存し、その上に矢印を描画しますが、なぜpicturebox画像が背景画像の上に描かれた矢印と等しくないのか分かりますか?私がこれをテストしたのは、別のピクチャボックスコントロールを自分のフォームに入れて、 'picturebox2.image = picturebox1.image'と書いただけで、私のバックグラウンドイメージしか表示されませんでした。 – taji01
'if(pictureBox1.Image == null)'を 'if((PictureBoxとしての送信者.Image == null)'に変更します。とにかく、私はあなたのコメントをはっきりと理解していません。可能であれば、新しいコードで質問を編集してください。もし私が助けることができるかどうかわかります – Sakura
こんにちはさくら、私はここで質問しました。 https://stackoverflow.com/questions/46592322/paint-drawline-image-into-picturebox-image – taji01