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

自己建站今日百度关键词排名

自己建站,今日百度关键词排名,网站开发外包费用的会计分录,制作网页链接的方法目录 坐标变换 平移坐标轴 缩放坐标轴 旋转坐标轴 定时器加坐标轴旋转实现动画旋转 transform旋转(可设置旋转轴) 绕X轴旋转 绕Y轴旋转 绕Z轴旋转 错切 Y轴错切 X轴错切 画家的保存与坐标复原 基本图形绘制 绘制点 绘制线 绘制矩形 普…

目录

坐标变换

平移坐标轴

缩放坐标轴

旋转坐标轴

定时器加坐标轴旋转实现动画旋转

transform旋转(可设置旋转轴)

绕X轴旋转

绕Y轴旋转

绕Z轴旋转

错切

Y轴错切

X轴错切

画家的保存与坐标复原

基本图形绘制

绘制点

绘制线

绘制矩形

普通矩形绘制

圆角矩形绘制

 填充矩形绘制

绘制圆形

绘制弧、扇形、弦

绘制弧

绘制扇形

绘制弦

绘制折线

绘制多边形

绘制路径

基本路径绘制

 填充规则

绘制贝塞尔曲线

二次贝塞尔曲线绘制

三次贝塞尔曲线绘制

绘制文字

静态文本绘制

普通文本绘制

字体相关函数

图片绘制

QPixmap

 指定位置裁剪

透明绘制

瓦片图绘制

图像的保存

QImage

QPicture

QBitmap

碰撞检测


坐标变换

平移坐标轴

painter.translate(50,50);
painter.drawPixmap(0,0, QPixmap(":/bk1.jpg").scaled(150,100));

缩放坐标轴

painter.drawPixmap(0,0, QPixmap(":/bk1.jpg").scaled(100,100));
painter.scale(0.5,0.5);
painter.drawPixmap(200,200, QPixmap(":/bk1.jpg").scaled(100,100));

旋转坐标轴

painter.translate(width()/2 - 100,height()/2 - 100);
painter.rotate(30); // 角度(默认以坐标原点旋转)(正数顺时针,负数逆时针)
painter.drawPixmap(0,0, QPixmap(":/bk1.jpg").scaled(200,200));

定时器加坐标轴旋转实现动画旋转

QTimer* timer = new QTimer(this);
timer->callOnTimeout(this, QOverload<>::of(&QWidget::update));
timer->start(10);static int angle = 0;
painter.translate(width()/2 - 100,height()/2 - 100);
painter.rotate(angle++);
painter.drawPixmap(0,0, QPixmap(":/bk1.jpg").scaled(200,200));

transform旋转(可设置旋转轴)

绕X轴旋转

QTimer* timer = new QTimer(this);
timer->callOnTimeout(this, QOverload<>::of(&QWidget::update));
timer->start(10);
//
static int angle = 0;
QTransform transform;
transform.rotate(angle++, Qt::XAxis);   // 绕X轴旋转
painter.setTransform(transform);painter.drawPixmap(0, 0 , QPixmap(":/bk1.jpg").scaled(200,200));

绕Y轴旋转

QTimer* timer = new QTimer(this);
timer->callOnTimeout(this, QOverload<>::of(&QWidget::update));
timer->start(10);
//
static int angle = 0;
QTransform transform;
transform.rotate(angle++, Qt::YAxis);   // 绕Y轴旋转
painter.setTransform(transform);painter.drawPixmap(0, 0 , QPixmap(":/bk1.jpg").scaled(200,200));

绕Z轴旋转

QTimer* timer = new QTimer(this);
timer->callOnTimeout(this, QOverload<>::of(&QWidget::update));
timer->start(10);
//
static int angle = 0;
QTransform transform;
transform.rotate(angle++, Qt::ZAxis);   // 绕Z轴旋转
painter.setTransform(transform);painter.drawPixmap(0, 0 , QPixmap(":/bk1.jpg").scaled(200,200));

错切

Y轴错切

// y轴错切
painter.translate(width()/2 - 100, height()/2 -100);
painter.shear(0, 0.5); // [-1, 1]
painter.drawPixmap(0, 0 , QPixmap(":/bk1.jpg").scaled(200,200));

 

X轴错切

// x轴错切
painter.translate(width()/2 - 100, height()/2 -100);
painter.shear(0.5, 0); // [-1, 1]
painter.drawPixmap(0, 0 , QPixmap(":/bk1.jpg").scaled(200,200));

画家的保存与坐标复原

painter.save();       // 画家状态保存
// 坐标变换
// 图形绘制
painter.restore();    // 画家状态复原

基本图形绘制

绘制点

painter.setPen(Qt::red);
painter.drawPoint(50,50);  // 绘制单个点
// 绘制多个点
QPoint points[] = {{0,0},{1,1},{2,2},{3,3}};
painter->drawPoints(points, 4);
// 绘制多个点
QPolygon polygon;
for(int i = 0; i < 100; i++)
{polygon.append({i,i});
}
painter.drawPoints(polygon);

绘制线

// 绘制一条线
painter.drawLine(0,0,100,100);
// 绘制多条线
QList<QLine> lines = {{0,0,100,100}, {100,100, 0,200}};
painter.drawLines(lines);

绘制矩形

普通矩形绘制

painter.drawRect(50,50,100,100);

圆角矩形绘制

// 最后一个参数为默认值,此时第三第四个参数为具体的值
painter.drawRoundedRect(QRect(200,200,100,100), 50, 50,Qt::SizeMode::AbsoluteSize);

// 此时第三第四个参数为百分比 [0,100]
painter.drawRoundedRect(QRect(200,200,100,100), 50, 50,Qt::SizeMode::RelativeSize);

 填充矩形绘制

painter.fillRect(50,50,100,100,QColor(255,0,255));

绘制圆形

painter.drawEllipse(0,0,200,200);						// 矩形区域绘制
painter.drawEllipse(QPoint(100,100),50,50);				// 中心点,两轴

绘制弧、扇形、弦

绘制弧

painter.drawRect(100,100,200,200);
painter.setPen(Qt::red);
painter.drawArc(QRect(100,100,200,200), 0, 16 * 90);

绘制扇形

painter.drawRect(100,100,200,200);
painter.setPen(Qt::red);
painter.drawPie(QRect(100,100,200,200), 0, 16 * 90);

绘制弦

painter.drawRect(100,100,200,200);
painter.setPen(Qt::red);
painter.drawChord(QRect(100,100,200,200), 0, 16 * 90);

绘制折线

QPolygon poly;
poly << QPoint(0, 0) << QPoint(100,100) << QPoint(200, 100);
painter.drawPolyline(poly);
QPoint pos[3] = { QPoint(0, 0) , QPoint(100,100) , QPoint(200, 100)};
painter.drawPolyline(pos, 3);

 

绘制多边形

painter.setBrush(Qt::green);
QPolygon poly = {{0,0},{100,0},{100,100},{0,100},{200,0}};
painter.drawPolygon(poly);

绘制路径

基本路径绘制

painter.setBrush(Qt::green);
QPainterPath path;
path.lineTo(200,200);
path.lineTo(0,200);
path.moveTo(400,400);
path.lineTo(width(),height());
painter.drawPath(path);

 填充规则

painter.setBrush(Qt::green);
QPainterPath path;
path.addRect(QRect(0,0,200,200));
path.addRect(QRect(100,100,200,200));
path.setFillRule(Qt::FillRule::WindingFill);      // 缠绕填充
//path.setFillRule(Qt::FillRule::OddEvenFill);    // 奇偶填充
painter.drawPath(path);

绘制贝塞尔曲线

二次贝塞尔曲线绘制

// 二次贝塞尔曲线
QPainterPath path;
path.moveTo(200,200);
path.quadTo(QPoint(300,300), QPoint(400,200));
painter.drawPath(path);

三次贝塞尔曲线绘制

// 三次贝塞尔曲线
QPainterPath path;
path.moveTo(0,0);
path.cubicTo(QPoint(10,100), QPoint(300,500), QPoint(200,200));
painter.drawPath(path);

绘制文字

静态文本绘制

// 绘制坐标即为左上角坐标
painter.drawStaticText(QPoint(0,0), QStaticText("Hello World"));

普通文本绘制

注意: 绘制文字是以左下角为原点绘制的

painter.setPen(Qt::red);
painter.setFont(QFont("微软雅黑",28,QFont::Bold,true));
painter.drawText(0,50, QString("Hello World"));

 

// 将绘制字体固定在矩形区域内 (会自动换行)
painter.drawText(QRect(0,0,100,200), "Hello World Hello World!");

 

字体相关函数

// 设置字体
painter->setFont();
// 获取字体
painter->font();
// 获取字体信息
painter->fontInfo();
// 获取字体数据
painter->fontMetrics();

图片绘制

QPixmap

针对输出显示优化的图像绘制

 

 指定位置裁剪

painter.drawPixmap(100, 100, QPixmap("mm.jpg").scaled(100,100));
painter.drawPixmap(QRect(0,0,100,100),                  // 绘制位置QPixmap("mm.jpg").scaled(100,100),   // 图像QRect(50,50,50,50));                 // 裁剪区域

drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)

透明绘制

分别准备一张原码图和一张掩码图

 

//掩码图和原图大小必须一致
//掩码图白色区域为透明,黑色区域为绘制
painter.setRenderHint(QPainter::RenderHint::Antialiasing);
QBitmap mask("mask.jpg");
QPixmap pix = QPixmap("snowball.jpg").scaled(mask.size());
pix.setMask(mask);
painter.drawPixmap(0, 0,pix);

瓦片图绘制

// 函数原型
drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
QPainter::PixmapFragment pixFrag = QPainter::PixmapFragment::create(QPointF(0,0), QRectF(0,0,100,100));
painter.drawPixmapFragments(&pixFrag, 2, QPixmap("mm.jpg").scaled(100,100));

图像的保存

m_pixmap = QPixmap(640,480);
QPainter painter(&m_pixmap);
painter.fillRect(m_pixmap.rect(),Qt::blue);
// 保存图片
m_pixmap.save("hello.png");

QImage

专门进行图像处理的

QImage m_img = QImage(640,480,QImage::Format_RGBA8888);
m_img.fill(Qt::transparent);
QPainter painter(&m_img);
painter.fillRect(QRect(0,0,100,100), Qt::blue);
m_img.save("img.png");

QPicture

Qt独有的图像格式

QPainter painter;
painter.begin(&pic);
painter.drawEillipse(0,0,200,200);
painter.end();
pic.save("pic.pic");// 绘制不能直接使用QPicture的构造函数加载文件
QPicture pict;
pict.load("pic.pic");
painter->drawPicture(0,0,pict);

QBitmap

位图(黑白图)

QBitmap bitmap("mm.jpg");
painter.drawImage(QRect(0, 0, 100, 100), bitmap.toImage());

碰撞检测

// 碰撞检测
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QStaticText>
#include <QPainterPath>
#include <QKeyEvent>// 碰撞检测
class Sprite
{
public:Sprite() = default;Sprite(int x,int y,int w,int h, const QPixmap& pix):m_pos(x,y),m_size(w,h),m_pixmap(pix){}void draw(QPainter* painter){painter->drawPixmap(QRect(m_pos,m_size), m_pixmap);}void setPos(int x,int y){m_pos.rx() = x;m_pos.ry() = y;}void moveBy(int dx,int dy){m_pos.rx() += dx;m_pos.ry() += dy;}void updateCollider(){collider.clear();collider.addRect(QRect(m_pos, m_size));}void printPos(){qInfo() << m_pos;}
private:QPoint m_pos;QSize  m_size;QPixmap m_pixmap;
public:QPainterPath collider;  // 碰撞器
};class Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget* parent = nullptr):QWidget(parent){resize(640,480);sp1 = new Sprite(0,0,50,50,QPixmap("mm.jpg"));sp2 = new Sprite(100,0,50,50, QPixmap("snowball.jpg"));}~Widget(){}
protected:void paintEvent(QPaintEvent* ev) override{QPainter painter(this);sp1->draw(&painter);sp2->draw(&painter);}void keyPressEvent(QKeyEvent *ev) override{switch(ev->key()){case Qt::Key_Up:sp2->moveBy(0, -3);break;case Qt::Key_Down:sp2->moveBy(0, 3);break;case Qt::Key_Left:sp2->moveBy(-3, 0);break;case Qt::Key_Right:sp2->moveBy(3, 0);break;}if(sp1->collider.intersects(sp2->collider)){sp2->setPos(width() - 50, 0);}update();// 判断碰撞sp2->updateCollider();sp1->updateCollider();}
private:Sprite* sp1 = nullptr;Sprite* sp2 = nullptr;
};int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
#include "main.moc"


文章转载自:
http://radiophysics.Lnnc.cn
http://shebeen.Lnnc.cn
http://knack.Lnnc.cn
http://liverwort.Lnnc.cn
http://heterotaxis.Lnnc.cn
http://gully.Lnnc.cn
http://prelithic.Lnnc.cn
http://epinephrine.Lnnc.cn
http://scoline.Lnnc.cn
http://preem.Lnnc.cn
http://chemitype.Lnnc.cn
http://bedfordshire.Lnnc.cn
http://leviable.Lnnc.cn
http://decedent.Lnnc.cn
http://pineal.Lnnc.cn
http://isoteniscope.Lnnc.cn
http://unbridgeable.Lnnc.cn
http://copperheadism.Lnnc.cn
http://feigned.Lnnc.cn
http://lamebrain.Lnnc.cn
http://meropia.Lnnc.cn
http://necessitude.Lnnc.cn
http://unzealous.Lnnc.cn
http://automatise.Lnnc.cn
http://overdrop.Lnnc.cn
http://excussio.Lnnc.cn
http://undone.Lnnc.cn
http://oscular.Lnnc.cn
http://usufructuary.Lnnc.cn
http://thecate.Lnnc.cn
http://toot.Lnnc.cn
http://tue.Lnnc.cn
http://abominable.Lnnc.cn
http://nlc.Lnnc.cn
http://lucern.Lnnc.cn
http://chattily.Lnnc.cn
http://fatigueless.Lnnc.cn
http://unreliable.Lnnc.cn
http://undergraduette.Lnnc.cn
http://dateless.Lnnc.cn
http://absenteeism.Lnnc.cn
http://adducible.Lnnc.cn
http://aleppo.Lnnc.cn
http://inadmissibility.Lnnc.cn
http://shotty.Lnnc.cn
http://decurrent.Lnnc.cn
http://meniscocytosis.Lnnc.cn
http://dwelt.Lnnc.cn
http://versicolor.Lnnc.cn
http://nictate.Lnnc.cn
http://endangered.Lnnc.cn
http://alchemistical.Lnnc.cn
http://prolicide.Lnnc.cn
http://surprisal.Lnnc.cn
http://fixer.Lnnc.cn
http://eared.Lnnc.cn
http://honolulan.Lnnc.cn
http://hookey.Lnnc.cn
http://swung.Lnnc.cn
http://apteryx.Lnnc.cn
http://monotype.Lnnc.cn
http://intoxicant.Lnnc.cn
http://thrombokinase.Lnnc.cn
http://sexualist.Lnnc.cn
http://disrepair.Lnnc.cn
http://eyewink.Lnnc.cn
http://thistle.Lnnc.cn
http://fop.Lnnc.cn
http://penstock.Lnnc.cn
http://buntons.Lnnc.cn
http://hydrogeology.Lnnc.cn
http://fermentum.Lnnc.cn
http://quilting.Lnnc.cn
http://ectoderm.Lnnc.cn
http://photophase.Lnnc.cn
http://shufty.Lnnc.cn
http://ironworker.Lnnc.cn
http://girandole.Lnnc.cn
http://fortunebook.Lnnc.cn
http://ophthalmological.Lnnc.cn
http://circumstantiate.Lnnc.cn
http://chromidium.Lnnc.cn
http://anemochore.Lnnc.cn
http://morphophonology.Lnnc.cn
http://uapa.Lnnc.cn
http://morphic.Lnnc.cn
http://whistle.Lnnc.cn
http://epitasis.Lnnc.cn
http://organisation.Lnnc.cn
http://slighting.Lnnc.cn
http://continence.Lnnc.cn
http://msfm.Lnnc.cn
http://irreproachable.Lnnc.cn
http://utilitarianism.Lnnc.cn
http://trna.Lnnc.cn
http://sukhumi.Lnnc.cn
http://teleferic.Lnnc.cn
http://totaquine.Lnnc.cn
http://tabitha.Lnnc.cn
http://houting.Lnnc.cn
http://www.dt0577.cn/news/105358.html

相关文章:

  • 高端大气企业网站模板怎么建立一个自己的网站
  • 百度网站制作公司全国最好的广告公司加盟
  • 成都网站优化排名百度用户服务中心人工24小时电话
  • 建设永久网站网络优化大师手机版
  • 郑州模板网站制作免费发布信息的平台有哪些
  • 爱网站最新发布址hao123文件在哪里
  • 大良商城网站建设关键词免费网站
  • 制作公司网站要多少钱热词搜索排行榜
  • 临沂哪里做网站比较好百度之家
  • 珠海做网站哪家好上海关键词优化推荐
  • 做美团网站怎么做中国宣布疫情结束日期
  • 电子商务网站建设作用如何做网页链接
  • 网站项目综合设计作业 代做金华seo扣费
  • 网站建设人才推广关键词优化公司
  • 自己可以做视频网站吗电子技术培训机构
  • 有哪些做网站的公司好怎么做网站
  • 一站式做网站设计seo网站快速排名
  • 网站正在建设中中文推广网络推广平台
  • php 企业网站源码网上宣传广告怎么做
  • 东莞企业如何建网站百度指数查询官方下载
  • 网站建设方案应该怎么做神马移动排名优化
  • 网站搜索引擎关键字怎么做建一个自己的网站
  • 企业官网网站建设营销手段和技巧
  • 中国空间站设计在轨飞行多少年seo网页的基础知识
  • 丰都网站建设报价百度 营销推广怎么做
  • 为什么做网站要服务器 和域名自己如何注册一个网站
  • .com免费网站怎么做微信营销方式
  • 网站服务器买了后怎么做的网络营销的特点有哪些?
  • 浙江做网站找谁广州seo黑帽培训
  • 网站建设可用性的五个标准网络推广计划方案