Heim > Web-Frontend > js-Tutorial > Hauptteil

Verwenden Sie QT, um einen einfachen Schneeeffekt zu implementieren

一个新手
Freigeben: 2017-09-14 11:16:13
Original
1466 Leute haben es durchsucht


QT implementiert einen einfachen Schneeeffekt

1. Schneeflockenbilder lesen

1.1 使用QPixmap类读入图片
Nach dem Login kopieren
QPixmap pix("://snow2.png");
Nach dem Login kopieren
1.2 使用Prawpixmap在界面上显示图片
Nach dem Login kopieren
//前两个参数表示图片左上角顶点的位置,后两个参数表示图片的大小p.drawPixmap(50,50,20,20,pix);
Nach dem Login kopieren

2 .Zufällig einstellen Koordinatenpunkte und Anzeigemuster

2.1 创建一个容器存放坐标点。
Nach dem Login kopieren
QList<QPoint> dispPos;
Nach dem Login kopieren
2.2 在构造函数中初始化这些坐标点,需要设置随机数种子,记得加上<QTime>头文件
Nach dem Login kopieren
//设置随机数种子qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
/用随机数初始化这些坐标点,随机分布在窗口中for(int i = 0;i<10;i++)
    {
        dispPos << QPoint(qrand()%width(),qrand()%height());
    }
Nach dem Login kopieren
2.3 在窗口中在这些坐标点上显示雪花图案。
Nach dem Login kopieren
//将图片的大小设置为30*30for(int i = 0;i<dispPos.count();i++) 
    p.drawPixmap(dispPos[i],pix.scaled(30,30));
Nach dem Login kopieren

3. Kontrollieren Sie das „Fallen“ von Schneeflocken

3.1 使用timerEvent事件,先开启定时器
Nach dem Login kopieren
//每过50毫秒调用一次事件
timerId = startTimer(50);
Nach dem Login kopieren
3.2 在事件中改变雪花图案的y坐标值,使其下落
Nach dem Login kopieren
//遍历所有雪花for(int i = 0;i<dispPos.count();i++){  //y坐标在原来基础上+1
    dispPos[i].setY(dispPos[i].y() + 1);    //判断:当y坐标超过窗口高度时
    if(dispPos[i].y() >= height())
    {    //将y坐标设置为0:从头开始
        dispPos[i].setY(0);    //但是x坐标进行随机,也就是从窗口顶随机位置出现
        dispPos[i].setX(qrand()%width());
    }
}//记得刷新界面update();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerwenden Sie QT, um einen einfachen Schneeeffekt zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage