当前位置: 首页 > news >正文

门源县住房和城乡建设局网站做网站要买什么服务器

门源县住房和城乡建设局网站,做网站要买什么服务器,鹰手营子矿网站建设,自己做的网站打不开怎么搞1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap pm, int sx, int sy)效果 2. 建立项目 假设已新建了mainwindow项目。现再添加一界面用于单独显示图片作为子窗口供调用当然也可在main.c直接调用作为父窗口。 1右击界面文件—添加新文件—QT—QT设计师界面类—choose—Dialog without buttons。类名为CImgPaint。 打开ui文件添加控件主要是label和button 具体属性列表如下 其中label控件仅仅是提供绘图的区域但最终绘图不是绘在label控件上。 3. 头文件添加变量编写构造函数 头文件中包含头文件 #define USE_OPENCV 0#include QDialog #include mainwindow.h #include QPoint using namespace std; #if USE_OPENCV#include opencv2/opencv.hpp#include opencv2/core.hppusing namespace cv; #endifnamespace Ui { class CImgPaint; } 类中添加成员变量 private:QPixmap pix_src,pix_fix;//原始图片及缩放图片float ratio1.0; //缩放比QRect paint_rect; //绘画限制区域int paint_xe,paint_ye,paint_we,paint_he;//期望绘画区域int paint_x,paint_y,paint_w,paint_h;//实际绘画区域int pix_sx,pix_sy; //选择图片的起始x、y开始绘画int step_val 20; //单次移动步长bool mouse_press_flag false;//鼠标是否按下QPoint mouse_pos_pre,mouse_pos_cur;//记录鼠标位置构造函数中添加输入图片的读取以及变量初始化。 #include CImgPaint.h #include ui_cimgpaint.h #include QDebug #include QPainter #include QWheelEvent #include QImage CImgPaint::CImgPaint(QWidget *parent) :QDialog(parent),ui(new Ui::CImgPaint) {ui-setupUi(this);#if USE_OPENCVcv::Mat img cv::imread(lenaGray.jpg,-1);pix_src get_pixmap_from_mat(img); #elseQImage qimg ;qimg.load(./lenaGray.jpg);pix_src pix_src.fromImage(qimg); #endifpaint_rect.setRect(ui-label_paint-x()1,ui-label_paint-y()1,ui-label_paint-width()1,ui-label_paint-height()1);pix_fix pix_src.scaled(paint_rect.width(),paint_rect.height(),Qt::KeepAspectRatio,Qt::FastTransformation);reset_para();update_para(); }void CImgPaint::reset_para(void) {ratio 1.0;paint_xe paint_x paint_rect.x() ;paint_ye paint_y paint_rect.y();paint_we paint_w paint_rect.width();paint_he paint_h paint_rect.height();pix_sx 0;pix_sy 0; }#if USE_OPENCV QPixmap CImgPaint::get_pixmap_from_mat(Mat img) {cv::Mat img_temp img.clone();QImage::Format format QImage::Format_RGB888;if(img_temp.channels()1){format QImage::Format_Grayscale8;}if(img_temp.channels()3){cv::cvtColor(img_temp,img_temp,CV_BGR2RGB);//opencv 按BGR处理}if(img_temp.depth()CV_16U){img_temp.convertTo(img_temp,CV_8U,1.0/257.0);}QPixmap pixmap QPixmap::fromImage(QImage(img_temp.data,img_temp.cols,img_temp.rows,(int)img_temp.step,format));return pixmap;} #endif CImgPaint::~CImgPaint() {delete ui; } update_para函数用来确定drawTiledPixmap函数的各参数。 void CImgPaint::update_para(void) {//*************** 0. 处理放大和缩小 **********************//// 放大缩小仅仅改变width和height图像的起始点不变int w,h;w ratio*paint_rect.width();//放大或缩小统一对标到画布尺寸h ratio*paint_rect.height();pix_fix pix_src.scaled(w,h,Qt::KeepAspectRatio,Qt::FastTransformation);//对输入的原图进行放大、缩小paint_we pix_fix.width();//得到初始的图像w、h期望值paint_he pix_fix.height();//*************** 1. 处理Y方向 **********************////1.1 首先确定实际绘图的起点绘图的起点应在画布的大小范围内 //// 若期望的起点超出画布上限则设置截取图像的起始位置sypaint_y paint_ye;if(paint_y paint_rect.y()){pix_sy paint_rect.y() - paint_y;pix_sy pix_sypix_fix.height()?pix_fix.height():pix_sy;paint_y paint_rect.y();}else{pix_sy 0;}//若期望的起点超出画布下限不允许if(paint_y(paint_rect.y()paint_rect.height()-1)){paint_y (paint_rect.y()paint_rect.height()-1);}//1.2 再确定终点即高度//对于图片本身减去sy得到图片本身剩余的高度paint_he - pix_sy;// 图片本身的高度同样不可超过画图区域剩余的高度paint_he paint_he( paint_rect.height()paint_rect.y()-paint_y )?(paint_rect.height()paint_rect.y()-paint_y):paint_he;//*************** 2. 处理X方向 **********************////1.1 首先确定实际绘图的起点绘图的起点应在画布的大小范围内 //// 若期望的起点超出画布上限则设置截取图像的起始位置sxpaint_x paint_xe;if(paint_x paint_rect.x()){pix_sx paint_rect.x() - paint_x;pix_sx pix_sxpix_fix.width()?pix_fix.width():pix_sx;paint_x paint_rect.x();}else{pix_sx 0;}//若期望的起点超出画布下限不允许if(paint_x(paint_rect.x()paint_rect.width()-1)){paint_x (paint_rect.x()paint_rect.width()-1);}//1.2 再确定终点即宽度//对于图片本身减去sx得到图片本身剩余的宽度paint_we - pix_sx;// 图片本身的宽度同样不可超过画图区域剩余的宽度paint_we paint_we( paint_rect.width()paint_rect.x()-paint_x )?(paint_rect.width()paint_rect.x()-paint_x):paint_we;paint_h paint_he;paint_w paint_we;qDebug()paint_rect;qDebug()paint_xpaint_ypaint_wpaint_hpix_fixpix_sxpix_sy;}4. paintEvent事件 头文件声明void paintEvent(QPaintEvent *event);并且在cpp文件中重写该事件函数 public slots:void paintEvent(QPaintEvent *event);void CImgPaint::paintEvent(QPaintEvent *event) {QPainter painter(this);painter.setRenderHints(QPainter::SmoothPixmapTransform|QPainter::Antialiasing|QPainter::TextAntialiasing);painter.drawRect(paint_rect.x()-1,paint_rect.y()-1,paint_rect.width()1,paint_rect.height()1); //画框painter.drawTiledPixmap(paint_x,paint_y,paint_w,paint_h,pix_fix,pix_sx,pix_sy);//绘图}5. 编写按钮的回调函数 按钮的回调函数主要用来修改变量的值。修改完后调用update_para、update重绘。 update_para函数用来确定drawTiledPixmap函数的各参数。 void CImgPaint::on_pushButton_zoomIn_clicked() {ratio ratio 0.1*ratio;update_para();this-update(); }void CImgPaint::on_pushButton_zoomOut_clicked() {ratio ratio - 0.1*ratio;update_para();this-update(); }void CImgPaint::on_pushButton_Up_clicked() {paint_ye -step_val;update_para();this-update(); }void CImgPaint::on_pushButton_Down_clicked() {paint_ye step_val;update_para();this-update();}void CImgPaint::on_pushButton_Left_clicked() {paint_xe - step_val;update_para();this-update();}void CImgPaint::on_pushButton_Right_clicked() {paint_xe step_val;update_para();this-update();}void CImgPaint::on_pushButton_reset_clicked() {reset_para();update_para();this-update(); }这样可以通过点击按钮来完成图片的移动、缩放。 6.鼠标拖动、滚轮实现图片拖动及缩放 重写如下虚函数 public slots:void wheelEvent(QWheelEvent *event);bool event(QEvent *event);void mouseDoubleClickEvent(QMouseEvent *event);void CImgPaint::mouseDoubleClickEvent(QMouseEvent *event) {if(event-button()Qt::LeftButton paint_rect.contains(event-pos())){reset_para();update_para();this-update();} } bool CImgPaint::event(QEvent *event) {qDebug()event;if(event-type() QEvent::MouseButtonPress ){QMouseEvent *mouse dynamic_castQMouseEvent* (event);//QPoint temp mouse-pos();if(mouse-button()Qt::LeftButton paint_rect.contains(mouse-pos())){mouse_press_flag true;QApplication::setOverrideCursor(Qt::OpenHandCursor);mouse_pos_pre mouse-pos();}qDebug()MouseButtonPress;}else if(event-type() QEvent::MouseButtonRelease){QMouseEvent *mouse dynamic_castQMouseEvent* (event);//判断鼠标是否是左键释放,且之前是在绘画区域if(mouse-button()Qt::LeftButton mouse_press_flag ){QApplication::setOverrideCursor(Qt::ArrowCursor); //改回鼠标样式mouse_press_flagfalse;}qDebug()MouseButtonRelease;}if(event-type() QEvent::MouseMove) //移动图片{if(mouse_press_flag){QMouseEvent *mouse dynamic_castQMouseEvent* (event);mouse_pos_cur mouse-pos();int dx mouse_pos_cur.x() - mouse_pos_pre.x();int dy mouse_pos_cur.y() - mouse_pos_pre.y();mouse_pos_pre mouse_pos_cur;paint_xe dx;paint_ye dy;update_para();this-update();}qDebug()MouseMove;}return QWidget::event(event); }void CImgPaint::wheelEvent(QWheelEvent *event) {if (event-delta()0) //上滑,缩小{on_pushButton_zoomIn_clicked();}else //下滑,放大{on_pushButton_zoomOut_clicked();}event-accept(); }可实现鼠标拖动、滚轮的方式来完成图片的拖动、缩放。 源码下载地址附使用方法 https://download.csdn.net/download/xiaohuolong1827/78238541 原链接
http://www.zqtcl.cn/news/493536/

相关文章:

  • 美橙做过网站案例好文案网站
  • 鞍山商城网站建设国外代理ip
  • 东莞网站设计风格wordpress不能启动怎么解决
  • 社交网站制作临海建设局网站导航
  • 合肥需要做网站的公司佛山网站制作的公司
  • 哪里有做网站平台建设网站如何盈利
  • dw网站制作素材单人做网站需要掌握哪些知识
  • 网络推广产品公司做移动网站优化首
  • 网站建设dqcx广告网络用语
  • 烟台网站建设首推企汇互联见效付款手机网站宽度自适应
  • 网站建设小程序湖南wordpress插件刷不出来
  • 中国建设银行网站首页joy荣添创意网站建设
  • 市场营销网站网站开发技术项目说明书
  • 销售网站开发的背景wordpress虚线框可序列
  • 免费响应式网站深圳关键词优化
  • 网站宣传模式做微视频的网站
  • 网站改版后的内容福建 网站建设
  • 网站的文件夹企业邮箱在哪查看
  • 开了360网站卫士ssl如何做301深圳制作网站开发费用
  • 在哪里做马可波罗网站公众号自己做电影网站
  • 网站建设音乐插件怎么弄陕西城乡建设部网站首页
  • 全国免费自学网站打开百度网站首页
  • 国外网站开发公司晋江论坛网
  • 问卷调查网站个人网站源码免费下载
  • 网站备案信息核验单填写建设企业网站价钱
  • 相城建设监理有限公司网站网页设计中html代码
  • 做农产品网站高端汽车
  • 工信部网站首页wordpress网站搬家vps
  • wordpress 淘客插件长沙排名优化公司
  • 网站首页怎么制作过程如何自己创作一个游戏