0
내 양식에 그림이 있습니다. 이미지 위에 화살표를 그릴 수 있기를 원했습니다. 나는 그럭저럭 중간에 도착할 수 있었다. 양식로드 이벤트에서 나는 그림을 그림 상자에 할당합니다. 아래 코드로 화살표를 만들 수 있습니다. 문제는 양식을로드 할 때 할당 된 그림이 지워지는 화살표를 만들 때마다 발생합니다. 내 이미지가 지워지는 이유는 무엇입니까? 양식로드시 할당 된 이미지를 화살표를 그리는 동안 어떻게 유지합니까?Picturebox 이미지 위에 그림을 그려 유지
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);
안녕 사쿠라,이 일했다. 고맙습니다! 이렇게하면 배경 이미지가 유지되고 그 위에 화살표가 그려 지지만 그림 상자 이미지가 배경 그림 위에 그려진 화살표와 같지 않은 이유를 알 수 있습니까? 필자가 테스트 한 방식은 다른 그림 상자 컨트롤을 내 양식에 넣고'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