我正在设置新代码,但是代码有问题。
该框始终位于屏幕的左上方。

让我解释一下代码。
需要在屏幕周围生成随机位置。
r + 256指定正在创建框的动画像素大小(256)。
RGB只是盒子的颜色。

我如何在屏幕周围的随机位置生成该框?

我试着玩代码,更改变量等。

int main()
{

    int r = rand() % 400;
    HDC hdc = GetDC(GetDesktopWindow());

    while (true)
    {
        srand(time(NULL));
        srand(GetTickCount64());
        for (int x = r; x < r + 256; x++)
        for (int y = r; y < r + 256; y++)
        SetPixel(hdc, x, y, RGB(127, x % 256, y % 256));
    }
    return 0;
}


我没有任何错误。

最佳答案

int r = rand() % 400;仅被评估一次,每次启动程序时,随机数发生器的起点都相同(“种子”)。
因此,r始终具有相同的值。

调用srand不会更新r;它为rand的后续使用设置种子。

你需要


每当您想要一个不同的数字时,都会生成一个新的随机数,
仅在使用rand之前为随机数生成器播种一次。


所以,

int main()
{

    srand(time(NULL));
    HDC hdc = GetDC(GetDesktopWindow());

    while (true)
    {
        int r = rand() % 400;
        for (int x = r; x < r + 256; x++)
            for (int y = r; y < r + 256; y++)
                SetPixel(hdc, x, y, RGB(127, x % 256, y % 256));
    }
    return 0;
}

关于c++ - 如何在屏幕周围生成随机像素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58553753/

10-11 22:38
查看更多