-1

Windowsフォームで以下のコードを使用してボタンを移動しています。ただし、ボタンが動くとちらつきます。SmoothingMode.HighQuality と DoubleBuffer を使用していますが。

ボタンのちらつきを減らすにはどうすればよいですか?

    public Form1()
    {
        InitializeComponent();

        this.DoubleBuffered = true;
        this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
        this.UpdateStyles();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        this.DoubleBuffered = true;
        if (button1.Location.X > 10 && button1.Location.X < 550)
        {
            Point osp = new Point(button1.Location.X + 1, button1.Location.Y);                
            button1.Location = osp;
        }
        else
        {
            Point osp = new Point(11, button1.Location.Y);
            button1.Location = osp;
        }  
     }
4

1 に答える 1

0

Timer の Interval プロパティを使用して、各ティック間の Interval を減らしてみてください。

private void Form1_Load(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer1.Interval = 400;
}

また、フォームの初期化で既に使用しているため、 timer1_tickメソッドから以下のコードを削除します。

this.DoubleBuffered = true;
于 2012-10-17T18:59:27.900 に答える