• 5222阅读
  • 6回复

[提问]怎样实现双缓冲显示字幕 [复制链接]

上一主题 下一主题
离线zzxap
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-11

以下是实现真正的双缓冲 图形。
void QLabelEx::paintEvent ( QPaintEvent * event)
{
QPixmap pic(this->width(),this->height());
QPainter painter;
painter.begin( &pic );


QRect rect1(0,0,m_nWidth,m_nHeight);
QPoint point1(0,0);


painter.scale(m_xscale,m_yscale);
painter.drawPixmap(point1,mImage,rect1);//QPixmap mImage,这个保存图片数据


QRect rectText(0,m_nHeight-200,500,200);
QPen pen(QColor (255,0,0),40,Qt::SolidLine);
painter.setPen(pen);
QString strDrawText;
QDateTime qdatetime;
qdatetime = QDateTime::currentDateTime();
strDrawText.sprintf("%s %d" ,qdatetime.toString("yyyy-MM-dd h:m:s").latin1() ,qdatetime.time().msec());//
//painter.resetXForm();
painter.drawText(rectText,Qt::AlignLeft,strDrawText);
painter.end();


bitBlt( this, 0,0, &pic );
}


以上是显示图片的。
要改成显示文字


        QString Txt=temp_str.mid(pos,TxtNum+1);
QPainter painter;
painter.begin(this);
painter.drawText(txtX,txtY,txtW,txtH,Qt::AlignLeft,Txt);
painter.end();


这样为什么显示不了
[ 此帖被zzxap在2011-04-11 15:09重新编辑 ]
离线voidbroken

只看该作者 1楼 发表于: 2011-04-11
画笔呢?画刷哪?
离线zzxap

只看该作者 2楼 发表于: 2011-04-11
QPainter painter;
painter.begin( &pic );


QRect rect1(0,0,m_nWidth,m_nHeight);
QPoint point1(0,0);
QRect rectText(0,m_nHeight-200,500,200);
QPen pen(QColor (255,0,0),40,Qt::SolidLine);
painter.setPen(pen);
painter.drawText(rectText,Qt::AlignLeft,"sssssssssssssssssssssssssssssss");
painter.end();

这样也显示不了
离线zzxap

只看该作者 3楼 发表于: 2011-04-11
QPixmap pic(this->width(),this->height());
离线voidbroken

只看该作者 4楼 发表于: 2011-04-11
上面的这个代码真正显示的应该是这句bitBlt( this, 0,0, &pic );,这句是往当前屏幕上的控件中刷图像的,
再上面的代码就是往内存中的QPitmap图像上画内容的,画完之后再用最后一句一起画到屏幕上,要让图像显示需要考虑图像的背景颜色,画笔颜色,画刷等等
离线zzxap

只看该作者 5楼 发表于: 2011-04-11
bitBlt 没定义

要怎么才能使用bitBlt
离线biosxjj

只看该作者 6楼 发表于: 2011-04-12
bitblt 是windows gdi
快速回复
限100 字节
 
上一个 下一个