Qt绘图事件:QPainter、QPaintEngine和QPaintDevice
发布时间:2020-12-14 03:49:47 所属栏目:大数据 来源:网络整理
导读:一、绘图,刷新界面的方法 1、绘图事件 一般在绘图事件中绘图 1 void paintEvent(QPaintEvent *); // 绘图事件在窗口重绘的时候(即状态改变)的时候调用 2 { 3 // 1、创建画家对象 4 QPainter p( this ); // 指定当前窗口为绘图设备 5 6 // 2、具体操作 7 /
一、绘图,刷新界面的方法 1、绘图事件 一般在绘图事件中绘图 1 void paintEvent(QPaintEvent *);//绘图事件在窗口重绘的时候(即状态改变)的时候调用 2 { 3 //1、创建画家对象 4 QPainter p(this);//指定当前窗口为绘图设备 5 6 //2、具体操作 7 //画背景图 8 QPixmap("../Image/bk.png"));//参数:顶点坐标、长、宽 9 //p.drawPixmap(rect(),QPixmap("../Image/bk.png")); 10 11 //画直线 12 #if 0 13 //定义画笔 用以绘制轮廓线 14 QPen pen; 15 pen.setWidth(5); //设置线宽 16 //pen.setColor(Qt::red); //设置颜色 17 pen.setColor( QColor(14,9,234) );//rgb设置颜色 18 pen.setStyle(Qt::DashLine); //设置风格 19 //把画笔交给画家 20 p.setPen(pen); 21 #endif 22 p.drawLine(50,50,150,50);//起点和终点坐标 23 24 //画矩形 25 p.drawRect(50,150); 26 27 //画圆 28 p.drawEllipse(QPint(50,50),25);//参数:圆心 水平方向半径 垂直方向半径 29 #if 0//画刷 用以用来填充 30 QBrush brush; //创建画刷对象 31 brush.setColor(Qt::red); //设置颜色 32 brush.setStyle(Qt::Dense1Pattern);//设置样式 33 p.setBrush(brush);//把画刷交给画家 34 #endif 35 } 2、手动刷新 ? 二、QBitmap和QPixmap 1 //QPixmap和QBitmap的使用方法基本相同 2 QPainter p(this); 3 p.drawPixmap(0,0,QPixmap("../image.png")); 4 p.drawPixmap(200,QBitmap("../image.png"));//参数3 彩色图片显示的也是黑白 ? 三、常用的绘图设备 一般情况,QPixmap用于显示;QImage用于传输; 1 QPixmap pixmap(400,300);//直接指定绘图设备的大小400*300 2 QPainter p(&pixmap); //画家 3 #if 0 4 //填充背景 5 p.fillRect(0,400,300,QBrush(Qt::white)); 6 pixmap.fill(Qt::white); 7 #endif 8 p.drawPixmap(0,80,QPixmap("../image/face.png")); 9 pixmap.save("../pixmap.jpg); //保存画家画的图片 2、QImage:和平台相关,可以对图片进行修改,可以在线程中绘图 1 QImage image(400,300,QImage::Format_ARGB32);//QImage::Format_ARGB32背景是透明 2 QPainter p(&image); 3 //绘图 4 p.drawImage(0,QImage("../Image/face.png"));//drawPixmap()也行 5 //对绘图设备前50个像素点进行操作 6 for(int i = 0; i < 50; i++) 7 { 8 for(int j = 0; j < 50; j++) 9 { 10 image.setPixel(QPoint(i,j),qRgb(0,255,0)); 11 } 12 } 13 image.save("../image.png"); 3、QPicture:保存绘图的状态(二进制文件) 1 QPicture picture; 2 QPainter p(&picture); 3 p.drawPixmap(0,QPixmap("../image/face.png")); 4 picture.save("../picture");//保存的是二进制文件 5 #if 0//加载QPicture图片 6 QPicture pic; 7 pic.load("../picture"); 8 #endif 4、QPixmap与QImage的转换 1 QPainter p(this); 2 QPixmap pixmap; 3 pixmap.load("../Image/face.png"); 4 //QPixmap -> QImage 5 QImage tempImage = pixmap.toImage(); 6 p.drawImage(0,0,tempImage); 7 8 QImage image; 9 image.load("../Image/face.png"); 10 //QImage -> QPixmap 11 QPixmap tempPixmap = QPixmap::fromImage(image); 12 p.drawPixmap(100,tempPixmap); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |