加载中…
个人资料
正在拉磨
正在拉磨
  • 博客等级:
  • 博客积分:0
  • 博客访问:11,638
  • 关注人气:65
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

QT中QImage::setPixel用法(原创)

(2009-10-26 02:54:45)
标签:

qt

编程

qimage

setpixel

c

it

分类: 编程,制作,DIY
首先解释一下:函数原形void QImage::setPixel ( int x, int y, uint index_or_rgb )并不是要在(x,y)点设置像素值为index_or_rgb!
index_or_rgb指的是像素的索引值。
梦里写得例子,解释一下用void QImage::setPixel表示8位 灰阶图像的方法。
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QBitmap>

class PainterWidget : public QWidget {
protected:
    void paintEvent(QPaintEvent*);
};

void PainterWidget::paintEvent(QPaintEvent *event) {
    unsigned char* array;
    unsigned char* base;
    array = (unsigned char*)malloc(1000*1000*sizeof(unsigned char));
    base = array;
    int k,s;
    s = 0;
    for(k=0;k<1000*1000;k++){       
    *array = s;
        array++;
        s++;
        if(s == 255) s=0; 
    }
    array = base;
    QPainter painter(this);
    QImage image(1000, 1000, QImage::Format_RGB32);
    QRgb value;

int i,j;
for(i=0;i<1000;i++)
  for(j=0;j<1000;j++){
    value = qRgb((int)(*array),(int)(*array), (int)(*array));
    image.setPixel(i, j, value);
    array++;
}
    painter.drawImage(0,0,image);
}

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
   
    PainterWidget pWidget;
    pWidget.setWindowTitle("QPixmap & QBitmap");
    pWidget.resize(400, 150);
    pWidget.show();
   
    return app.exec();
}

很烂的一段程序是吧:》
所以欢迎转载,最好注明出处。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有