Qt绘制文本二 弯曲排列和旋转效果 弧形路径 正弦函数路径

void WgtText::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QString m_string("abcdefghijklmnopqrstuvwxy");
int font_size = 15;
float x0 = font_size * m_string.count() * 0.5;
int YSize = font_size * m_string.count() * 0.5;
for(int i=0; i<m_string.count(); i++)
{
// 按圆弧函数绘制
painter.save();
float tAlpha = i*3.14/m_string.count();
float tx = YSize*cos(tAlpha) + YSize;
float ty = YSize*sin(tAlpha);
painter.translate(tx, ty); // 文字的位置
painter.rotate(180*i/(float)(m_string.count())); // 将文字本身旋转
painter.drawText(QPointF(-10.0, 10.0), QString("%1").arg(m_string[i]));
painter.restore();
}
}
--------------------------------------------------------------------------------------

void WgtText::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
int font_size = 10;
// 设置字符间距
int text_space = 2;
int wh = height();
QFont font;
font.setFamily("Microsoft YaHei");
// 大小
font.setPointSize(font_size);
// 使用字体
painter.setFont(font);
static QString m_string("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
for(int i=0; i<m_string.count(); i++)
{
// 按正弦函数绘制
float tx = (font_size + text_space) * i;
float ty = sin(tx);
//压缩y坐标
ty = wh/2 + ty*(wh/2*0.2);
painter.drawText(QPointF(tx, ty), QString("%1").arg(m_string[i]));
}
return QWidget::paintEvent(event);
}
Qt绘制文本二 弯曲排列和旋转效果 弧形路径 正弦函数路径的更多相关文章
- Qt绘制文本一
QPainterPath,使用 drawText且设置字体,再使用painter.drawText方式 效果图: void WgtText::paintEvent(QPaintEvent *event ...
- Qt之图形(绘制文本)
简述 前面我们讲解了Qt图形的基本绘制,其中包括: 绘制文本.直线.直线.矩形.弧线.椭圆.多边形.图片,以及其它一些高级用法,比如:渐变.转换等. 本节我们来详细讲解文字的绘制.主要通过QPaint ...
- 在WPF中自定义你的绘制(二)
原文:在WPF中自定义你的绘制(二) 在WPF中自定义你的绘制(二) ...
- Qt富文本编辑器QTextDocument
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt富文本编辑器QTextDocument 本文地址:https://www.tech ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...
- NLP(二十二)利用ALBERT实现文本二分类
在文章NLP(二十)利用BERT实现文本二分类中,笔者介绍了如何使用BERT来实现文本二分类功能,以判别是否属于出访类事件为例子.但是呢,利用BERT在做模型预测的时候存在预测时间较长的问题.因此 ...
- html5 canvas 笔记三(绘制文本和图片)
绘制文本 fillText(text, x, y [, maxWidth]) 在指定的(x,y)位置填充指定的文本,绘制的最大宽度是可选的. strokeText(text, x, y [, ma ...
- FontMetrics ----- 绘制文本,获取文本高度
Canvas 绘制文本时,使用FontMetrics对象,计算位置的坐标. public static class FontMetrics { /** * The maximum distance a ...
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
随机推荐
- ztree异步加载树节点
参考文档:https://www.cnblogs.com/tenWood/p/8620708.html ztree api地址:http://www.treejs.cn/v3/api.php 说明:j ...
- XML简单入门
1.xml文件的第一句为<?xml version="1.0" ?> xml 1.0版本和1.1版本有较大不同,且1.1版本向下不可兼容,故使用version 1.0 ...
- Spring 的@@Autowired 和 @Qualifier注释
@Autowired spring2.1中允许用户通过@Autowired注解对Bean的属性变量.属性Setter方法以及构造方法进行标注,配合AutowiredAnnotationBeanProc ...
- Java 层序创建和遍历二叉树
直接上代码 package te.com; import java.util.LinkedList; import java.util.Queue; import java.util.logging. ...
- Ubuntu16.04 上安装MySQL5.7
Ubuntu版本:16.04.4 1.先更新最新的源 sudo apt-get update 2.查看是否已经安装过mysql sudo netstat -tap | grep mysq 如果没有安装 ...
- vue-循环标记列表元素
<el-col :lg="4" class="list" v-for="(item,index) in picList"> &l ...
- 常用的 git 命令
更新 : 2019-03-02 写一个常用流程比较清楚 : 项目开始 : git clone ... git add file git commit -m "whatever" g ...
- Hisat2 bowtie2比对结果解读(Hisat2 Alignment summary)
RNA-seq数据的比对结果怎么解读?网上有很多人问,这里做一个大致的总结. Hisat2和bowtie2比对后产生的Alignment summary的格式是一样的,如下: Alignment su ...
- GEO数据下载分析(SRA、SRR、GEM、SRX、SAMN、SRS、SRP、PRJNA全面解析)
很多时候我们需要从GEO(https://www.ncbi.nlm.nih.gov/geo/)下载RNA-seq数据,一个典型的下载页面是https://www.ncbi.nlm.nih.gov/ge ...
- Lombok插件
Lombok简介 Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它.Lombok是一种Java™实用工具,可用来帮助开发人员消除J ...