2017-02-04 5 views
0

두 개의 그림 개체가 있습니다. 둘 다 오른쪽에서 왼쪽으로 옮기길 바랍니다. 눈에 띄는 패널 밖으로 나가면 그 위치가 시작점으로 바뀝니다. 화면에는 항상 2 장의 그림이 움직입니다.새 위치 업데이트시 이미지가 깜박입니다.

타이머를 사용하지 않으면 2 장의 그림이 그려집니다. 그러나 틱 이벤트가있는 위치에서 타이머를 사용하여 움직이게하는 위치를 변경하면 그림이 1 개만 표시되며 계속 깜박입니다.

아래 코드는 지금까지입니다. 나는 C#에 익숙하지 않다. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다.

타이머 간격 = 30; 양식 1 :

public partial class Form1 : Form 
{ 
    Background bg1 = new Background(); 
    Background bg2 = new Background(800); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e) 
    { 
     bg1.paint(e); 
     bg2.paint(e); 
    } 

    private void Timer_Tick(object sender, EventArgs e) 
    { 
     bg1.updatePosition(); 
     bg2.updatePosition(); 

     this.Refresh(); 
    } 
} 

배경 :

class Background 
{ 
    int bg_width = 800; 
    int bg_height = 500; 

    Image bg; 
    Rectangle wb; 
    private static int x = 0; 

    public Background() 
    { 
     bg = Properties.Resources.bg; 
     wb = new Rectangle(x, 0, bg_width, bg_height); 
    } 

    public Background(int custom_x) 
    { 
     x = custom_x; 
     bg = Properties.Resources.bg; 
     wb = new Rectangle(x, 0, bg_width, bg_height); 
    } 

    public void paint(PaintEventArgs e) 
    { 
     Graphics g = e.Graphics; 
     g.DrawImage(bg, wb); 
    } 

    public void updatePosition() 
    { 
     x--; 
     if (x == -800) 
     { 
      x = 801; 
     } 
     wb.Location = new Point(x, 0); 
    } 
} 
+0

타이머 간격은 0.03 초입니다. 실제로 원하는 것입니까? –

+2

더블 버퍼링 FTW! –

+0

대상 : Winforms, WPF, ASP ..? __Always__ 질문에 올바르게 태그를 답니다. - 당신의 _pictures_가 실제로 무엇인지 설명하십시오! – TaW

답변

-1

임없는 큰 비주얼 스튜디오 타이머의 팬,하지만 난 가능한 한 낮게 타이머 간격을 유지하려고하고 덜이 사진을 움직일 것입니다 업데이트마다 "지연"문제가 해결됩니다.

하고 만

wb.Location = new Point(x, 0); 

Beacause은 하나의 픽쳐가 X에 두 이미지의 코드를 0으로 설정 표시 - 교환> 단 번째는 가시

->가 서로 안쪽 이것으로 해결해야합니다

wb.Location = new Point(x, wb.Location.y); 

이것은 기본적으로 y 코드가 변경되지 않도록합니다.

+0

0을 wb.Location.y로 바꾸어도 도움을 주셔서 감사합니다. 아무 의미가 없습니다. –

+0

그것은 당신의 문제를 해결하는 방법 일 것이지만, 그것을 시도하고 싶지 않다면, 그것은 당신에게 달려 있습니다. – Aaron