ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

001-C++定义像素的RGB值并在QT显示

2021-02-15 14:57:04  阅读:279  来源: 互联网

标签:ev QT int C++ RGB QWidget TestRGB include testrgb


创建好QT工程后,重载绘制画面函数。

思路:

1.重新定义QT的绘制函数

2.根据void TestRGB::paintEvent(QPaintEvent* ev)函数里的进行思路进行编程

main.cpp

#include "testrgb.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    TestRGB w;
    w.show();
    return a.exec();
}

testrgb.cpp

#include "testrgb.h"
#include <QPainter>
#include <QImage>
static int w = 1280;
static int h = 720;

TestRGB::TestRGB(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
	resize(w,h);//窗口大小
}

void TestRGB::paintEvent(QPaintEvent* ev)
{
	QImage img(w, h, QImage::Format_RGB888);
	auto d = img.bits();
	unsigned char r = 255;
	for (int j = 0; j < h; j++)
	{
		r--;
		int b = j * w * 3;
		for (int i = 0; i < w * 3; i += 3)
		{
			d[b + i] = r;//R
			d[b + i + 1] = 0;//G
			d[b + i + 2] = 0;//B
		}
	}
	QPainter p;
	p.begin(this);

	p.drawImage(0, 0, img);

	p.end();

}

testrgb.h

#pragma once

#include <QtWidgets/QWidget>
#include "ui_testrgb.h"

class TestRGB : public QWidget
{
    Q_OBJECT

public:
    TestRGB(QWidget *parent = Q_NULLPTR);
    //重载绘制画面函数
    void paintEvent(QPaintEvent* ev) override;


private:
    Ui::TestRGBClass ui;
};

 

标签:ev,QT,int,C++,RGB,QWidget,TestRGB,include,testrgb
来源: https://blog.csdn.net/qq_25054853/article/details/113815972

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有