QT 数字图像处理 笔记一
1.被有符号整数和无符号整数十足的坑了一上午。我在实现图像旋转的时候先把坐标轴中心平移到图像中心:painter.translate(up_x+temp_w,up_y+temp_h);注意这里面各个数都是32位无符号整数。在旋转完整后,我希望把坐标轴归位,就直接用了painter.translate(-(up_x+temp_w),-(up_y+temp_h))。于是就在这里被坑了,两个无符号整数相加还是无符号整数,如果直接在前面加个负号的话就是求补了,得到这个数绝对不是原来数的相反数,所以坐标轴就不知道被移到哪里去了,图像自然就显示不出来。最后,简单总结一下,QT实现图像旋转的代码:
void MainWindow::paintEvent(QPaintEvent *e) { QPainter painter(this); //QImage image = QImage(filename_png,0); QImage image = QImage(png_data,width,height,QImage::Format_ARGB32); if(rotate2) { quint32 temp_w = width/2; quint32 temp_h = height/2; painter.translate(up_x+temp_w,up_y+temp_h); painter.rotate(angel); qint32 temp1 = -(up_x+temp_w); qint32 temp2 = -(up_y+temp_h); painter.translate(temp1,temp2); } painter.drawImage(up_x,up_y,image); }
2.QMessageBox最简单用法:
1 //在头文件里面包含这几行,使得QMessageBox里面的中文正常显示,在头文件里面还要包含#include"qtextcodec.h"
2 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312")); 3 QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); 4 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QMessageBox::warning(this, "警告","请先选择裁剪区域!",QMessageBox::Yes);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了