以间隔移动图片框图形

时间:2014-05-08 18:42:11

标签: c#

我在图片框中从左到右创建图形,通过添加单个像素列,以预定的时间间隔(300毫秒)。当后续像素列超出图片框宽度时,我看不到更多像素。

如何制作移动图片框窗口,这样可以一直看到当前的像素列?

我正在使用BASS库,代码如下。

private void timer1_Tick_1(object sender, EventArgs e)
{    
    graphic = pictureBox1.CreateGraphics();
    bool spectrum3DVoicePrint = visuals.CreateSpectrum3DVoicePrint(rHandle, graphic, pictureBox1.Bounds, Color.Navy, Color.Navy, pos, false, true);`

    graphic.Dispose();
    pos = ++;
}

1 个答案:

答案 0 :(得分:0)

您需要将每个位置存储在数组中。 这是我的简单代码,用于演示绘制线条并在达到图片框宽度后移动。确保像素,x,y等任何值的任何错误导致输出错误。

    int x = -1;
    int y = 50;
    Random rnd = new Random();
    bool check = true;
    int[,] pos;
    int index = -1;
    private void Form1_Load(object sender, EventArgs e)
    {
    //Initalize array
    pos = new int[pictureBox1.Width + 2, 2];
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        Graphics graphic = pictureBox1.CreateGraphics();
        if (x < pictureBox1.Width)
        {
            index++;
            x++;
        }
        else
        {
            graphic.Clear(Color.Black);
            for (int i = 0; i < pictureBox1.Width; i++)
            {
                pos[i, 1] = pos[i + 1, 1];
                graphic.DrawRectangle(System.Drawing.Pens.Lime, pos[i, 0], pos[i, 1], 1, 1);
            }

        }
        graphic.DrawRectangle(System.Drawing.Pens.Lime, x, y, 1, 1);
        pos[index, 0] = x;
        pos[index, 1] = y;
        graphic.Dispose();
        //for random dots
        //y = rnd.Next(5, 95);

        //for line
        if (check)
            y++;
        else
            y--;
        if (y == 100)
            check = false;
        if (y == 5)
            check = true;
    }