ButterFly

butterfly.png

ButterFly.h

ifndef BUTTERFLY_H

define BUTTERFLY_H

include <QtGui/QDialog>

include "ui_ButterFly.h"

include <QGraphicsScene>

include <QGraphicsView>

include <QGraphicsItem>

include <QObject>

class Butterfly : public QObject, public QGraphicsItem
{
Q_OBJECT
public:
explicit Butterfly(QObject * parent = 0);
void timerEvent(QTimerEvent *);//聲明定時(shí)器的timerEvent()函數(shù)
QRectF boundingRect() const; //該函數(shù)必須實(shí)現(xiàn)
protected:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
//重畫函數(shù)
private:
bool up; //用于實(shí)現(xiàn)蝴蝶的飛舞畫面
QPixmap pix_up; //蝴蝶圖案一
QPixmap pix_down; //蝴蝶
qreal angle;
};

endif // BUTTERFLY_H

ButterFly.cpp

include "ButterFly.h"

static const double PI = 3.14;

Butterfly::Butterfly(QObject * parent)
{
pix_up.load(":/images/Resources/butterfly1.png"); //圖片的加載
pix_down.load(":/images/Resources/butterfly2.png");
up = true;
startTimer(100); //時(shí)間間隔100毫秒

}

QRectF Butterfly::boundingRect() const //加載蝴蝶項(xiàng)目的限定范圍,以其自身的坐標(biāo)系為基礎(chǔ)設(shè)定的
{
qreal adjust = 2;
return QRectF(-pix_up.width()/2-adjust,-pix_up.height()/2-adjust,
pix_up.width()+adjust2,pix_up.height()+2adjust);
}
//一下函數(shù)實(shí)現(xiàn)蝴蝶的飛舞效果
void Butterfly::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if(up)
{
painter->drawPixmap(boundingRect().topLeft(),pix_up);//繪圖
up = !up;
}
else
{
painter->drawPixmap(boundingRect().topLeft(),pix_down);
up = !up;
}
}
//判斷蝴蝶的運(yùn)動(dòng)范圍袍榆,并做相應(yīng)的處理相信根據(jù)函數(shù)名大家都知道啥意思
void Butterfly::timerEvent(QTimerEvent *)
{
// edge controll
qreal edgex = scene()->sceneRect().right()+boundingRect().width()/2;
qreal edgetop = scene()->sceneRect().top()+boundingRect().height()/2;
qreal edgebottom = scene()->sceneRect().bottom()+boundingRect().height()/2;

if (pos().x() >= edgex)
    setPos(scene()->sceneRect().left(),pos().y());
if (pos().y() <= edgetop)
    setPos(pos().x(),scene()->sceneRect().bottom());
if (pos().y() >= edgebottom)
    setPos(pos().x(),scene()->sceneRect().top());

angle += (qrand()%10)/20.0;
qreal dx = fabs(sin(angle*PI)*10.0);
qreal dy = (qrand()%20)-10.0;
//flash = !flash;
setPos(mapToParent(dx,dy));//映射到場(chǎng)景的坐標(biāo)
//update();

}

main函數(shù)

include "ButterFly.h"

include <QtGui/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

if 0

QGraphicsScene *scene = new QGraphicsScene;
scene->setSceneRect(QRectF(-500,-500,500,500));
for(int i=0;i<10;i++){
    Butterfly *butterfly = new Butterfly;
    //butterfly->setPos(-100,0);
    //為每一個(gè)飛舞的湖底產(chǎn)生一個(gè)隨機(jī)位置
    butterfly->setPos((qrand()%int(scene->sceneRect().width()))-400,(qrand()%int(scene->sceneRect().height()))-300);
    scene->addItem(butterfly);
}
QGraphicsView * view = new QGraphicsView;
view->setScene(scene);
//view->setMaximumSize(800,600);
//view->setMinimumSize(800,600);
view->resize(1000,1000);
view->show();

endif

QGraphicsScene *scene = new QGraphicsScene;
scene->setSceneRect(QRectF(-400,-300,800,600));
for(int i=0;i<100;i++){
    Butterfly *butterfly = new Butterfly;
    //為每一個(gè)飛舞的湖底產(chǎn)生一個(gè)隨機(jī)位置
    butterfly->setPos((qrand()%int(scene->sceneRect().width()))-400,(qrand()%int(scene->sceneRect().height()))-300);
    scene->addItem(butterfly);
}

QGraphicsView *view = new QGraphicsView;
view->setScene(scene);
view->setMaximumSize(800,600);
view->setMinimumSize(800,600);
view->show();
return a.exec();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玉组,一起剝皮案震驚了整個(gè)濱河市硫朦,隨后出現(xiàn)的幾起案子泡躯,更是在濱河造成了極大的恐慌列敲,老刑警劉巖母怜,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異善榛,居然都是意外死亡辩蛋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門移盆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悼院,“玉大人,你說(shuō)我怎么就攤上這事咒循【萃荆” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵剑鞍,是天一觀的道長(zhǎng)昨凡。 經(jīng)常有香客問我爽醋,道長(zhǎng)蚁署,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任蚂四,我火速辦了婚禮光戈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遂赠。我一直安慰自己久妆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布跷睦。 她就那樣靜靜地躺著筷弦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抑诸。 梳的紋絲不亂的頭發(fā)上烂琴,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蜕乡,去河邊找鬼奸绷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛层玲,可吹牛的內(nèi)容都是我干的号醉。 我是一名探鬼主播反症,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畔派!你這毒婦竟也來(lái)了铅碍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤线椰,失蹤者是張志新(化名)和其女友劉穎该酗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體士嚎,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呜魄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了莱衩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爵嗅。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笨蚁,靈堂內(nèi)的尸體忽然破棺而出睹晒,到底是詐尸還是另有隱情,我是刑警寧澤括细,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布伪很,位于F島的核電站,受9級(jí)特大地震影響奋单,放射性物質(zhì)發(fā)生泄漏锉试。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一览濒、第九天 我趴在偏房一處隱蔽的房頂上張望呆盖。 院中可真熱鬧,春花似錦贷笛、人聲如沸应又。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)株扛。三九已至,卻和暖如春汇荐,著一層夾襖步出監(jiān)牢的瞬間洞就,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工拢驾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奖磁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓繁疤,卻偏偏與公主長(zhǎng)得像咖为,于是被迫代替她去往敵國(guó)和親秕狰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,700評(píng)論 0 3
  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問題 3.指南認(rèn)識(shí) 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    陽(yáng)光的大男孩兒閱讀 4,988評(píng)論 0 13
  • make menuconfig過(guò)程解析作者 codercjg 在 28 九月 2015, 5:27 下午 make...
    codercjg閱讀 955評(píng)論 0 1
  • 上周去畫室體驗(yàn)了一節(jié)彩鉛課躁染,感覺好棒鸣哀!N年前收到的禮物終于可以派上用場(chǎng)了~~ 沒有老師的指點(diǎn),光影是放棄了吞彤,從來(lái)都...
    鈴兒響金金閱讀 185評(píng)論 0 1
  • 我得承認(rèn)我衬,最近的自己負(fù)能量很多,總是不停地向別人抱怨饰恕。由于自己每天會(huì)反思挠羔,在筆記上簡(jiǎn)要記錄一天發(fā)生的事以及自己的情...
    清冷的藍(lán)天天閱讀 232評(píng)論 0 0