-
UID:811
-
- 注册时间2005-09-23
- 最后登录2006-03-15
- 在线时间0小时
-
- 发帖31
- 搜Ta的帖子
- 精华0
- 金钱210
- 威望64
- 贡献值10
- 好评度10
-
访问TA的空间加好友用道具
|
我在windows xp下用qt4写的以下代码是工作正常的 - void QzBoard::paintEvent(QPaintEvent* event)
- {
- QPainter painter(this);
- //grid
- for(int i=0;i<ITEMNUMX;i++)
- {
- for(int j=0;j<ITEMNUMY;j++)
- {
- if((i+j)%2)
- {
- painter.drawPixmap(i*ITEMWIDTH,j*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_tileOdd);
- }
- else
- {
- painter.drawPixmap(i*ITEMWIDTH,j*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_tileEven);
- }
- }
- }
- if(m_bPlaying)
- {
- //items
- for(int i=0;i<ITEMNUMX;i++)
- {
- for(int j=0;j<ITEMNUMY;j++)
- {
- painter.drawPixmap(m_crdnt[i][j].x,m_crdnt[i][j].y,m_size[i][j].w,m_size[i][j].h,*m_pItem[i][j]);
- }
- }
- //set cursor to the current focus item
- if(!m_bMoving && curX != -1 && curY != -1)
- {
- painter.drawPixmap(curX*ITEMWIDTH,curY*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_cursor);
- }
- }
- painter.end();
- }
换到红帽9下,改成如下样子 - void QzBoard::paintEvent(QPaintEvent* event)
- {
- QPainter painter;
- painter.begin(this);
- ////grid
- for(int i=0;i<ITEMNUMX;i++)
- {
- for(int j=0;j<ITEMNUMY;j++)
- {
- if((i+j)%2)
- {
- painter.drawTiledPixmap(i*ITEMWIDTH,j*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_tileOdd);
- }
- else
- {
- painter.drawTiledPixmap(i*ITEMWIDTH,j*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_tileEven);
- }
- }
- }
- if(m_bPlaying)
- {
- //items
- for(int i=0;i<ITEMNUMX;i++)
- {
- for(int j=0;j<ITEMNUMY;j++)
- {
- painter.drawTiledPixmap(m_crdnt[i][j].x,m_crdnt[i][j].y,m_size[i][j].w,m_size[i][j].h,*m_pItem[i][j]);
- }
- }
- //set cursor to the current focus item
- if(!m_bMoving && curX != -1 && curY != -1)
- {
- painter.drawTiledPixmap(curX*ITEMWIDTH,curY*ITEMHEIGHT,ITEMWIDTH,ITEMHEIGHT,m_cursor);
- }
- }
- painter.end();
- }
不能正常工作了. grid那块能显示,可items那块就显示不出来. 我猜可能是双buffer的问题,可是,我不会-_-## 哪位兄弟指教我一下.
|