• 6066阅读
  • 4回复

QT 4.6.2 绘图问题 [复制链接]

上一主题 下一主题
离线jadesoft
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-12
程序初始化运行效果图:

看样子是正常的,但是当该Widget缩小到一定比例后该Widget绘图就变成了如下这样

在该Widget  重新调整大小的事件(resizeEvent),代码如下:
  1.     if( m_lpCanvas )
  2.     {
  3.         delete m_lpCanvas;
  4.         m_lpCanvas = 0;
  5.     }
  6.     m_lpCanvas = new QImage(event->size(),QImage::Format_ARGB32_Premultiplied);
  7.     ResetBackground(m_lpCanvas,&m_tgBkBrush);

在该Widget的绘制事件(paintEvent),代码如下:
  1.     QPainter tgPainter(this);
  2.     if(  m_lpCanvas &&  !m_lpCanvas->isNull() )
  3.         tgPainter.drawImage(0,0,*m_lpCanvas);

请问是什么原因
离线yangfanxing
只看该作者 1楼 发表于: 2010-04-12
构造图像错位等。。。

QImage::QImage ( const uchar * data, int width, int height, int bytesPerLine, Format format )
试试计算bytesPerLine,规范下构造的QImage图片。
解决过类似的问题。

纯色的话QImage::Format_ARGB32_Premultiplied?256色就可以了;
PHPWind好恶心。。。不想看这种界面。。。
离线jadesoft

只看该作者 2楼 发表于: 2010-04-13
请问如何计算bytesPerLine?
计算方程式是什么?
离线yangfanxing
只看该作者 3楼 发表于: 2010-04-13
bytesPerLine=每行字节数,但是你的图应该没有缩放什么的,所以一般
=width×图像格式每个像素所占字节数(比如byte就×1,int就×4)
PHPWind好恶心。。。不想看这种界面。。。
离线jadesoft

只看该作者 4楼 发表于: 2010-04-13
可我这个图是用QPianter绘制的并不是从某个文件载入的
快速回复
限100 字节
 
上一个 下一个