1
PictureBox
안에 선 회전 애니메이션을 그려야합니다. 나는 회선을 그릴 때 pictureBox1.CreateGraphics()
을 사용하지만이 방법이 PictureBox
에 적합하지 않다고 들었다. 또한 PictureBox
창에 큰 깜박임이 발생합니다. 어떤 제안이 있습니까? pictureBox1.Paint 이벤트 처리기에서 드로잉 코드를 이동하고 당신이 당신의 pictureBox1를 다시 그릴 필요가 whenewer 단지 pictureBox1.Invalidate를 호출하는그림 상자에 회전 선 그리기
private void OnTimedEvent(object source, PaintEventArgs e)
{
try
{
if (comport.BytesToRead > 0)
{
X = comport.ReadByte();
Y = comport.ReadByte();
Z = comport.ReadByte();
}
Graphics g = pictureBox1.CreateGraphics();
Pen red = new Pen(Color.Red, 2);
g.TranslateTransform(100, 80 - X);
g.RotateTransform(120);
g.DrawLine(red, new Point(100, 0 + X), new Point(100, 80 - X));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
timer1.Interval = 1;
pictureBox1.Invalidate();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
기존 선을 지우지 않고 pictureBox에 선을 그리려면 한 가지 더해야 할 일이 무엇입니까? – HacLe
두 가지 방법이 있습니다. 유한 한 수의 선을 그리려면 X의 각 새 값을 목록 또는 배열에 저장할 수 있습니다. 목록을 선호하기 때문에 목록을 선호합니다. 목록을 더 많이 만들 수 있기 때문에 목록을 선호합니다. 가장 오래된 값을 제거하십시오. 그런 다음 모든 Paint 이벤트에서 해당 값을 반복하고 선을 그려야합니다. 다른 방법은 비트 맵에서 각 새 행을 지우지 않고 그리는 것일 수 있지만 결국에는 비트 맵에 선이 오버로드되고 그림에 아무런 의미가 없습니다. 좀 더 명확히하고 싶다면 사용할 수 있습니다. –