QT-QPainter

QT-QPainter

  •  1.QPainter画图
    •   1.1 概述
    •   1.1 QPainter设置
    •   1.2 QPainter画线
    •   1.3 QPainter画矩形
    •   1.4 QPainter画圆
    •   1.5 QPainter画圆弧
    •   1.6 QPainter画扇形
  •  2.QGradient
    •   2.1 QLinearGradient线性渐变
    •   2.2 QRadialGradient径向渐变
    •   2.3 QConicalGradient锥形渐变
  •  3.综合仿雷达
  •  4.仪表盘
    •   4.1初
    •   4.2 正弦纠正刻度文字方向
    •   4.3 终

 1.QPainter画图

  1.1 概述

	坐标系为

在这里插入图片描述

	QPainter是Qt 库中用于在屏幕上进行绘画的类。它提供了各种绘制功能,比如画线、画图形、画文本等。在使用QPainter之前,需要对QPaintEvent事件进行重写

在这里插入图片描述

  1.1 QPainter设置

	1.初始化QPainter painter(this);2.设置笔刷QPen pen(Qt::blue,7);painter.setPen(pen);painter.setRenderHints(QPainter::Antialiasing,true);    //抗锯齿painter.setFont(QFont("Arial", 30));

  1.2 QPainter画线

    //画线-两点确定painter.drawLine(10,200,300,20);painter.drawLine(QLine(10,200,300,20));painter.drawLine(QPoint(10,200),QPoint(300,20));

  1.3 QPainter画矩形

    //画矩形//  void drawRect(const QRectF &rectangle) QRectF浮点型QRect rectangle(20,100,200,100);  painter.drawRect(rectangle);
//  void drawRect(int x, int y, int width, int height)painter.drawRect(20,100,200,100);
//  void drawRect(const QRect &rectangle)

  1.4 QPainter画圆

在这里插入图片描述

    //画圆形--在矩形区域画椭圆painter.drawEllipse(rectangle);painter.drawEllipse(rect().center(),200,100);    //在整个窗口的中间,画一个宽200 高100的椭圆painter.drawEllipse(QPoint(80,500),80,80);       //在yuan圆心的坐标点为(80,500)处画一个80*80的圆

  1.5 QPainter画圆弧

	绘制的弧由给定的矩形、起始角和伸缩脚定义。起始角和伸缩脚必须以1/16度表示,即一个完整的圆等于5760(16*360)。角的正值表示逆时针方向,角的负值表示顺时针方向零度在3点钟的位置。如://(x,y,width,height)--x,y为左上角起始点坐标QRect rectangle(200,100,200,150);	painter.drawRect(rectangle);painter.drawArc(rectangle,30*16,120*16);//30 起始角,正值逆时针方向,负值顺时针方向//120 伸缩角

在这里插入图片描述

    QRect rectangle(200,100,200,150);painter.drawRect(rectangle);painter.drawArc(rectangle,30*16,120*16);painter.drawArc(30,100,100,180,45*16,90*16);

  1.6 QPainter画扇形

    painter.drawPie(rectangle,30*16,120*16);

 2.QGradient

	QLinearGradient(const QPointF &start, const QPointF &finalStop)//渐变色起始点和终止点setColorAt(qreal position, const QColor &color)	

  2.1 QLinearGradient线性渐变

    QPainter painter(this);//起始点宽的 x:1/3---2/3  y:1/2处QLinearGradient lineGradient(width()/3,height()/2,width()*2/3,height()/2);lineGradient.setColorAt(0.1,Qt::black); //用给定的颜色在给定的位置创建一个停止点,给定的位置必须在0到1之间。lineGradient.setColorAt(1,Qt::white);QBrush brush(lineGradient);painter.setBrush(brush);painter.drawRect(rect());

在这里插入图片描述

    QPainter painter(this);//从左上角到右下角开始变QLinearGradient lineGradient(0,0,width(),height());lineGradient.setColorAt(0.1,Qt::black);lineGradient.setColorAt(1,Qt::white);QBrush brush(lineGradient);painter.setBrush(brush);painter.drawRect(rect());

在这里插入图片描述

    QPainter painter(this);QLinearGradient lineGradient(0,0,width(),height());lineGradient.setColorAt(0.7,Qt::black);lineGradient.setColorAt(1,Qt::white);QBrush brush(lineGradient);painter.setBrush(brush);painter.drawRect(rect());
}

在这里插入图片描述

    lineGradient.setColorAt(0,Qt::blue);	lineGradient.setColorAt(0.4,Qt::red);lineGradient.setColorAt(0.7,Qt::black);lineGradient.setColorAt(1,Qt::white);0-0.4   :蓝红渐变0.4-0.7 :红黑渐变0.7-1	:黑白渐变

在这里插入图片描述

  2.2 QRadialGradient径向渐变

//QRadialGradient(const QPointF &center, qreal radius, const QPointF &focalPoint)QPainter painter(this);QRadialGradient radialGradient(400,400,100);	//400,400--中心点,100辐射半径radialGradient.setColorAt(0,Qt::white);	//中心radialGradient.setColorAt(1,Qt::black);	//边缘painter.setBrush(QBrush(radialGradient));painter.drawRect(200,300,400,200);

在这里插入图片描述

  2.3 QConicalGradient锥形渐变

    QPainter painter(this);QConicalGradient conicalGradient(400,400,0);// 添加颜色停靠点conicalGradient.setColorAt(0.0, Qt::red);conicalGradient.setColorAt(0.5, Qt::blue);conicalGradient.setColorAt(1.0, Qt::red);// 使用这个渐变创建 QBrushQBrush brush(conicalGradient);// 使用 QBrush 进行绘图painter.setPen(Qt::NoPen);	//设置无边框painter.setBrush(brush);painter.drawRect(200,300,400,200);

在这里插入图片描述

 3.综合仿雷达

#include "widget.h"
#include "ui_widget.h"#include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer(this);connect(timer,&QTimer::timeout,this,[=](){startAngle += 30;if(startAngle >= 360){startAngle = 0;}update();});timer->setInterval(100);timer->start();
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing,true); //平滑处理painter.setBrush(QBrush(Qt::black));painter.drawRect(rect());   //设置背景色被黑色painter.setBrush(Qt::NoBrush);painter.translate(rect().center()); //将坐标点转移到中间位置int rEve = height()/2/7;int dataTmp = rEve * 7;QPen pen(Qt::green,4);  //设置画笔painter.setPen(pen);for(int i=1;i<=7;i++){painter.drawEllipse(QPoint(0,0),rEve*i,rEve*i);}painter.drawLine(-rEve*7,0,rEve*7,0);   //横线painter.drawLine(0,-rEve*7,0,rEve*7);   //竖线QConicalGradient conGradient(0,0,-startAngle); //中心点(0,0)起始角度30//设置锥形渐变色conGradient.setColorAt(0,QColor(0,255,0,200));conGradient.setColorAt(0.1,QColor(0,255,0,100));conGradient.setColorAt(0.2,QColor(0,255,0,0));conGradient.setColorAt(1,QColor(0,255,0,0));//用渐变色指定画刷painter.setBrush(conGradient);painter.setPen(Qt::NoPen);  //取消边框//画扇形painter.drawPie(QRect(-dataTmp,-dataTmp,2*dataTmp,2*dataTmp),-startAngle*16,70*16);
}

 4.仪表盘

  4.1初

#include "widget.h"
#include "ui_widget.h"#include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer(this);currentValue = 0;connect(timer,&QTimer::timeout,[=](){if(mark == 0){currentValue++;if(currentValue >= 60){mark = 1;}}if(mark == 1){currentValue--;if(currentValue == 0){mark = 0;}}update();});timer->start(50);
}Widget::~Widget()
{delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing,true);//底色弄成黑色painter.setBrush(QBrush(Qt::black));painter.drawRect(rect());//坐标系平移到中心painter.translate(rect().center());//画大圆painter.drawEllipse(QPoint(0,0),height()/2,height()/2);painter.setBrush(Qt::NoBrush);//画小圆painter.setPen(QPen(Qt::white,3));painter.drawEllipse(QPoint(0,0),60,60);//当前值painter.setFont(QFont("华文宋体",10));painter.drawText(QRect(-60,-60,120,120),Qt::AlignCenter,QString::number(currentValue));//画刻度-旋转坐标轴画线//1.算出一个刻度需要旋转的角度double angle = 240.0 / 60.0;//2.设置第一个刻度的位置//顺时针旋转坐标轴到15度,会一直处在15度位置直到下一次旋转将在15基础上+再次旋转的角度painter.setFont(QFont("华文宋体",10));painter.save(); //保存旋转前的位置painter.rotate(150);for(int i = 0;i<=60;i++){if(i%5 == 0){//画字if(135+angle * i < 270){painter.rotate(180);painter.drawText(-(height()/2-30),10,QString::number(i*4));painter.rotate(-180);}else{painter.drawText(height()/2-70,10,QString::number(i*4));}//画长刻度painter.drawLine(height()/2-20,0,height()/2-3,0);}else{  //画短刻度painter.drawLine(height()/2-8,0,height()/2-3,0);}//画完后旋转painter.rotate(angle);}//画指针-线//坐标轴先回到原点painter.restore();  //恢复到原来位置painter.save();painter.rotate(150+ angle *currentValue);painter.drawLine(60,0,height()/2-50-20,0);//画扇形painter.restore();painter.setPen(Qt::NoPen);painter.setBrush(QColor(255,0,0,150));painter.drawPie(QRect(-height()/2,-height()/2,height(),height()),(360-150)*16,-angle*currentValue*16);//angle前取负数,为了让它顺时针方向画
}

在这里插入图片描述

  4.2 正弦纠正刻度文字方向

	1.如图下,红框中50所示,刻度线处的文字应当保持与50同样的方向而不是图中120的方向易知在不改变坐标系的情况下无理论怎么旋转,其在远处所写的字符都无法达到红框50所显示的字符易知通过50代替120可知,若将坐标系原点移到120处在修改字符50120即可所以对于120的修改只需要在此坐标系的基础上将y轴的坐标改到120的坐标处即可2.那么它地方的坐标如何得到呢?已知条件1.圆的半径	r2.圆的偏转角度 a所以可得x,y的坐标x = r * cosa;y = r * sina; 

在这里插入图片描述

    //写刻度文字int r = height()/2- 45;for(int i=0;i<=60;i++){if(i%5 == 0){//保存坐标系painter.save();//算出平移点int delX = qCos(qDegreesToRadians(210-angle*i)) * r;int delY = qSin(qDegreesToRadians(210-angle*i)) * r;//平移坐标系painter.translate(QPoint(delX,-delY));//旋转坐标系//painter.rotate(angle * i); //已知120是正好的//写上文字painter.drawText(-20,-20,50,30, Qt::AlignCenter,QString::number(i*4));//恢复坐标系painter.restore();}}通过以上的修改,可将刻度转换成如下,但是只有120是正好的,其他的刻度需要先将坐标系旋转才能达到120的效果3.已知angle = 240.0 / 60.0 = 4120处旋转角为0,所以其他位置的旋转角度只需要凑齐120度的旋转角度即可120刻度时旋转角度为0,已知,在120时 angle * i = 120,若想在此处旋转角度为0则:0 = angle * i - 120;所以其他位置应当旋转的角度为painter.rotate(angle * i - 120); 

在这里插入图片描述
在这里插入图片描述

    int r = height()/2- 50;for(int i=0;i<=60;i++){if(i%5 == 0){//保存坐标系painter.save();//算出平移点int delX = qCos(qDegreesToRadians(210-angle*i)) * r;    //qt中认得是弧度,弧度=角度*pi/180int delY = qSin(qDegreesToRadians(210-angle*i)) * r;//平移坐标系painter.translate(QPoint(delX,-delY));//旋转坐标系painter.rotate(angle * i - 120);//写上文字painter.drawText(-25,-25,50,30, Qt::AlignCenter,QString::number(i*4));//恢复坐标系painter.restore();}}

在这里插入图片描述

  4.3 终

#include "widget.h"
#include "ui_widget.h"#include <QPainter>
#include <QtMath>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);setFixedSize(800,600);  //设置默认窗口startAngle = 150;startSpeed();
}Widget::~Widget()
{delete ui;
}void Widget::initCanvas(QPainter& painter)
{painter.setRenderHint(QPainter::Antialiasing,true);//底色弄成黑色painter.setBrush(QBrush(Qt::black));painter.drawRect(rect());//坐标系平移到中心painter.translate(rect().center().x(),rect().center().y()+50);
}void Widget::drawMiddleCircle(QPainter &painter, int radius)
{//画小圆painter.setPen(QPen(Qt::white,3));painter.drawEllipse(QPoint(0,0),radius,radius);
}void Widget::drawCurrentSpeed(QPainter &painter)
{//当前值painter.setPen(Qt::white);QFont font("Arial",18);font.setBold(true); //加粗painter.setFont(font);painter.drawText(QRect(-60,-60,120,70),Qt::AlignCenter,QString::number(currentValue*4));QFont font2("Arial",10);font2.setBold(true); //加粗painter.setFont(font2);painter.drawText(QRect(-60,-60,120,160),Qt::AlignCenter,"Km/h");
}void Widget::drawScale(QPainter &painter,int radius)
{//1.算出一个刻度需要旋转的角度angle = 240.0 / 60.0;//2.设置第一个刻度的位置//顺时针旋转坐标轴到15度,会一直处在15度位置直到下一次旋转将在15基础上+再次旋转的角度painter.save(); //保存旋转前的位置painter.setPen(QPen(Qt::white,5));painter.rotate(startAngle);for(int i = 0;i<=60;i++){if(i>=40){painter.setPen(QPen(Qt::red,5));}if(i%5 == 0){//画长刻度painter.drawLine(radius-20,0,radius-3,0);}else{  //画短刻度painter.drawLine(radius-8,0,radius-3,0);}//画完后旋转painter.rotate(angle);}painter.restore();painter.setPen(QPen(Qt::white,5));
}void Widget::drawScaleText(QPainter &painter,int radius)
{QFont font("Arial",10);font.setBold(true); //加粗painter.setFont(font);int r = radius - 50;for(int i=0;i<=60;i++){if(i%5 == 0){//保存坐标系painter.save();//算出平移点int delX = qCos(qDegreesToRadians(210-angle*i)) * r;    //qt中认得是弧度,弧度=角度*pi/180int delY = qSin(qDegreesToRadians(210-angle*i)) * r;//平移坐标系painter.translate(QPoint(delX,-delY));//旋转坐标系painter.rotate(angle * i - 120);//写上文字painter.drawText(-25,-25,50,30, Qt::AlignCenter,QString::number(i*4));//恢复坐标系painter.restore();}}
}void Widget::drawPointLine(QPainter &painter,int length)
{//坐标轴先回到原点painter.save();painter.setBrush(Qt::white);painter.setPen(Qt::NoPen);static const QPointF points[4] = {QPointF(0,0),QPointF(200,-1.0),QPointF(200.0,1.0),QPointF(0.0,15.0),};painter.rotate(startAngle + angle *currentValue);painter.drawPolygon(points,4);// painter.drawLine(60,0,length,0);painter.restore();  //恢复到原来位置
}void Widget::drawSpeedPie(QPainter &painter, int radius)
{painter.setPen(Qt::NoPen);painter.setBrush(QColor(255,0,0,80));painter.drawPie(QRect(-radius,-radius,radius*2,radius*2),(360-startAngle)*16,-angle*currentValue*16);//angle前取负数,为了让它顺时针方向画
}void Widget::startSpeed()
{timer = new QTimer(this);currentValue = 0;connect(timer,&QTimer::timeout,[=](){if(mark == 0){currentValue++;if(currentValue >= 61){mark = 1;}}if(mark == 1){currentValue--;if(currentValue == 0){mark = 0;}}update();   //更新});timer->start(50);
}void Widget::drawEllipseInnerBlack(QPainter &painter, int radius)
{painter.setBrush(Qt::black);painter.drawEllipse(QPoint(0,0),radius,radius);}void Widget::drawEllipseInnerShine(QPainter &painter, int radius)
{QRadialGradient radialGradient(0,0,radius);radialGradient.setColorAt(0,QColor(255,0,0,200));radialGradient.setColorAt(1,QColor(0,0,0,100));painter.setBrush(radialGradient);painter.drawEllipse(QPoint(0,0),radius,radius);
}void Widget::drawEllipseOuterShine(QPainter &painter, int radius)
{painter.setPen(Qt::NoPen);QRadialGradient radialGradient(0,0,radius);radialGradient.setColorAt(1,QColor(255,0,0,200));radialGradient.setColorAt(0.97,QColor(255,0,0,120));radialGradient.setColorAt(0.9,QColor(0,0,0,0));radialGradient.setColorAt(0,QColor(0,0,0,0));painter.setBrush(radialGradient);painter.drawPie(QRect(-radius,-radius,radius*2,radius*2),(360-150)*16,-angle*61*16);//angle前取负数,为了让它顺时针方向画
}void Widget::drawLogo(QPainter &painter, int radius)
{QRect rectangle(-40,radius*0.38,80,80);painter.drawPixmap(rectangle,QPixmap(":/icon.png"));
}
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);int rad = height()/2;//初始化画布initCanvas(painter);//画小圆drawMiddleCircle(painter,60);//画刻度-旋转坐标轴画线drawScale(painter,rad);//写刻度文字drawScaleText(painter,rad);//画指针-线drawPointLine(painter,rad-70);//画扇形drawSpeedPie(painter,rad+22);//画渐变色内圈圆drawEllipseInnerShine(painter,110);//画黑色内圈drawEllipseInnerBlack(painter,80);//画当前速度drawCurrentSpeed(painter);//画外环发光圈drawEllipseOuterShine(painter,rad+22);drawLogo(painter,rad);
}

在这里插入图片描述

链接:https://pan.baidu.com/s/1UFuGa5WBCZv0H1BtSsIJbw 
提取码:14wi 
--来自百度网盘超级会员V5的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二、GitLab相关操作

GitLab相关操作 一、组、用户、项目管理1.创建组2.创建项目3.创建用户并分配组3.1 创建用户3.2 设置密码3.3 给用户分配组 二、拉取/推送代码1.配置ssh(第一次需要)1.1 创建一个空文件夹1.2 配置本地仓账号和邮箱1.3 生成ssh公钥密钥1.4 gitlab配置公钥 2.拉取代码3.推送代码3.…

Ubuntu系统进行深度学习时查看GPU、CPU实时使用情况等

文章目录 静态查看GPU使用情况动态查看GPU使用情况查看CPU使用情况 主要用到了 nvidia-smi和 top命令。 静态查看GPU使用情况 nvidia-smi动态查看GPU使用情况 -n后面的数字是更新的时间间隔&#xff1a; watch -n 1 nvidia-smi-n 1代表每隔1秒刷新一次&#xff0c;ctrlc退…

C语言动态内存空间分配

1. 前言 在讲内存分配前&#xff0c;咱来聊一下为什么会有内存分配这个概念呢&#xff0c;大家都知道C语言当中是有着许多的数据类型&#xff0c;使用这些数据类型就会在内存上开辟其相对应的空间&#xff0c;那既然会开辟相应的空间&#xff0c;为什么还会有内存分配呢&#x…

Day31代码随想录(1刷) 贪心

122. 买卖股票的最佳时机 II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得…

WPF OnStartup

在Windows Presentation Foundation (WPF)框架中&#xff0c;OnStartup 是 System.Windows.Application 类的一个受保护的虚方法&#xff0c;它是应用程序启动过程中的一个重要环节。当一个 WPF 应用程序启动时&#xff0c;其入口点通常是 App.xaml 文件和对应的后台代码文件 A…

springcloud基本使用三(搭建nacos)

window下安装nacos: 下载页面:Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Releases alibaba/nacoshttps://github.com/alibaba/nacos/releases…

基于卷积神经网络的中药识别(pytorch框架)【python源码+UI界面+前端界面+功能源码详解】

原作者链接&#xff1a;基于卷积神经网络的中药识别&#xff08;pytorch框架&#xff09;【python源码UI界面前端界面功能源码详解】_识别中药python-CSDN博客 //gitcode,gitee,飞桨&#xff0c;csdn&#xff0c;bilibili。几个有用网站&#xff0c;直接搜索即可&#xff0c;平…

主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络

本改进已融入到 YOLOv5-Magic 框架。 论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 文章目录 HGNetv2网络结构1.1 主干网络1.2 颈部…

关于阿里云中RDS数据库的CPU使用率和内存使用率的20道面试题

1. 什么是RDS数据库&#xff1f; RDS数据库&#xff0c;全称为关系型数据库服务&#xff08;Relational Database Service&#xff09;&#xff0c;是一种在云端运行的在线数据库服务。 它基于阿里云飞天分布式操作系统和全SSD盘高性能存储构建&#xff0c;旨在为用户提供稳定…

【Android】毫无耦合性,一个Item根布局搞定 item侧滑删除菜单,像IOS那样简单的使用侧滑删除。(1)

自定义ViewGroup实现侧滑删除简单&#xff0c;难得是还要同时 处理多指滑动的屏蔽&#xff0c;防止两个侧滑菜单同时出现&#xff0c;等等&#xff0c; 有办法将这些东西都用一个ViewGroup搞定么&#xff1f; 看本文如何巧用static类变量来解决这些矛盾冲突。 【2 预览】 那…

真快乐APP抢购源码实现

支持多个平台的自动 滑动验证码、选字验证码。缺点就是需要自己找一个验证码识别服务器,可以自己用python写一个,或者使用超级鹰(本篇教程就是使用它) 下面是实现源码 "ui"; Date.prototype.Format = function (fmt) {var o = {"M+": this.getMonth() …

Swift:在 Win10 上开发入门

访问 https://swift.org/download/ 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占2.56GB 官网文档&#xff1a;https://www.swift.org/documentation/ 中文教程&#xff1a;The swift…

2024年做抖音小店商家,最不该忽视的三个运营要点,一定要避开!

大家好&#xff0c;我是电商花花。 每一次平台规则的改变都深深的影响着我们无货源商家&#xff0c;我们只有在规则内行使&#xff0c;遵守规则&#xff0c;才能在安然无恙。 所以我们做抖音小店一定要及时关注平台的规则变化&#xff0c;以及整体的做店趋势。 只有这样才不…

Qt Remote Objects (QtRO) 笔记

简介 Qt Remote Objects (QtRO) 是 Qt 的一个进程间通信模块。 术语 Source 是指提供服务或提供功能供其他程序使用的对象&#xff0c;是 RPC 中的被调用端。 Replica 是指 Source 对象的代理对象&#xff0c;用于 RPC 中的调用端&#xff0c;对 Replica 的调用请求将被转发…

App.vue触发axios报错及解决方案

App.vue触发axios报错及解决方案 修改根目录下vue.config.js文件 module.exports {publicPath: ./,assetsDir: assets,configureWebpack: {devServer: {client: {overlay: false}}} }重新npm run dev 搞定

十个排序算法

目录 冒泡排序(Bubble Sort) 选择排序(Select Sort) 插入排序&#xff08;InsertSort&#xff09; 希尔排序&#xff08;ShellSort&#xff09; 计数排序&#xff08;CountSort&#xff09; 快速排序&#xff08;QuickSort&#xff09; 归并排序&#xff08;Merge Sort&a…

双击返回键,轻松处理 WebView 中的后退事件

引言 在移动应用开发中&#xff0c;WebView 组件因其能够展示网页内容的能力而变得日益重要。它允许开发者在应用内部直接嵌入网页&#xff0c;无需离开应用即可查看和交互丰富的网络信息和媒体内容。WebView 的普及&#xff0c;使得用户可以在一个统一的环境中流畅地使用应用…

树状数组模板

单点更新 区间查询 使用树状数组维护原数组即可 public class Test01 {static final int N 10010;static int[] c new int[N];static int n;public static void main(String[] args) {Scanner in new Scanner(System.in);n in.nextInt();for (int i 1; i < n; i) {in…

Jenkins 安装部署

1、安装下载 官网地址&#xff1a;Jenkins 下载 war 包 1、前置环境 JDK 环境&#xff08;根据 Jenkins 版本不同&#xff0c;需要的 JDK 版本不同&#xff0c;目前需要 JDK11 的版本来支持&#xff09;Maven maven 官网下载压缩包 &#xff0c;并将其传输到服务器&#xf…

【热门话题】计算机视觉入门:探索数字世界中的“视觉智能”

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 计算机视觉入门&#xff1a;探索数字世界中的“视觉智能”摘要正文一、计算机视…