qt画旋转的带箭头的线段

tesb::tesb(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
}

void tesb::DrawCustomLine(QPainter& _painter, double _angle, double _len, const QString& _name, const QColor& _color)
{
	// 初始化
	_painter.resetTransform(); // 重设画笔
	_painter.translate(QPoint(300,300));
	_painter.setPen(QPen(Qt::black, 2));

	// 绘制线段
	QLine _line(QPoint(0,0), QPoint(_len,0));
	_painter.rotate(_angle);
	_painter.drawLine(_line);

	// 绘制箭头
	int off_x = 10;
	QPainterPath _path;
	_path.moveTo(_len-off_x, -5);
	_path.lineTo(_len,0);
	_path.lineTo(_len-off_x,5);
	_painter.drawPath(_path);

	// 绘制名称
	_painter.setPen(_color);

	QFont _font = _painter.font();
	_font.setPointSize(10);
	_font.setBold(true);
	_painter.setFont(_font);

	_painter.drawText(QPoint(_len-2*off_x,-10), _name);
}

void tesb::paintEvent( QPaintEvent *ev )
{
	QPainter _painter(this);
	_painter.setPen(QPen(Qt::black, 2));
	// 反锯齿
	_painter.setRenderHint(QPainter::Antialiasing);

	// 将画笔中心点移动至(300,300)
	_painter.translate(QPoint(300,300));

	// 绘制中心点
	_painter.drawPoint(QPoint(0,0));
	// 绘制外圆
	_painter.drawEllipse(QRect(-150,-150,300,300));

	DrawCustomLine(_painter, 0, 150, "Da", Qt::red);
	DrawCustomLine(_painter, 123.5, 130, "Db", Qt::green);
	DrawCustomLine(_painter, -45, 30, "Dc", Qt::blue);
	DrawCustomLine(_painter, -145, 60, "Dd", Qt::yellow);

	QWidget::paintEvent(ev);
}
时间: 2024-11-04 13:02:41

qt画旋转的带箭头的线段的相关文章

python生成中文验证码,带旋转,带干扰噪音线段

# -*- coding: utf-8 -*- """ Created on Sun Oct 4 15:57:46 2015 @author: keithguofan """ import random from PIL import Image,ImageDraw,ImageFont import math,string class RandomChar(): @staticmethod def Unicode(): val = random.

CAD里面怎么画带箭头的直线

转自:http://jingyan.baidu.com/article/9113f81b0192e72b3214c709.html?st=2&os=0&bd_page_type=1&net_type=1 当我们需要在CAD里面完成物理方面力的分解的时候就需要画坐标轴等带箭头的直线,但是CAD里面是自己不带箭头直线的,下面将详细的介绍怎么在CAD里面巧妙的完成直线箭头的绘制. 工具/原料 CAD 方法/步骤 打开CAD界面,点击左边的构造线工具.   选中你需要绘制箭头直线的端点,并

MFC画带箭头的直线

构造一个函数,是在startPoint,endPoint间画一条带箭头的线段: void CTry1View::DrawLine(POINT startPoint, POINT endPoint) { CClientDC dc(this); dc.MoveTo(startPoint); dc.LineTo(endPoint); double PI = 3.1415926; double t=PI/4; //箭头与直线夹角 double l=0.2; //箭头边长度占直线长度的百分比 POINT

Android自定义ViewGroup(一)——带箭头的圆角矩形菜单

今天要做一个带箭头的圆角矩形菜单,大概长下面这个样子: 要求顶上的箭头要对准菜单锚点,菜单项按压反色,菜单背景色和按压色可配置. 最简单的做法就是让UX给个三角形的图片往上一贴,但是转念一想这样是不是太low了点,而且不同分辨率也不太好适配,干脆自定义一个ViewGroup吧! 自定义ViewGroup其实很简单,基本都是按一定的套路来的. 一.定义一个attrs.xml 就是声明一下你的这个自定义View有哪些可配置的属性,将来使用的时候可以自由配置.这里声明了7个属性,分别是:箭头宽度.箭头

带箭头提示框总结及实例

无论是提示框还是导航栏都能看到如上图所示的带有箭头的框框,这种箭头可以通过背景图片或者是css来实现,本文介绍三种通过css实现带箭头的提示框. 通过border属性思路:两个三角形,通过定位使两个三角形相差1px作为边框. CSS3 transfrom思路:先做一个两条边相同颜色的正方形,然后旋转一定角度就是三角形了 特殊字符'♦'思路:特殊字符漏出上半部分,看上去就像三角形了 一.通过border属性: 我们先做一个宽和高都是10px的div,边框也是10px, 1 width: 10px;

带箭头方框

无论是提示框还是导航栏都能看到如上图所示的带有箭头的框框,这种箭头可以通过背景图片或者是css来实现,本文介绍三种通过css实现带箭头的提示框. 通过border属性思路:两个三角形,通过定位使两个三角形相差1px作为边框. CSS3 transfrom思路:先做一个两条边相同颜色的正方形,然后旋转一定角度就是三角形了 特殊字符'♦'思路:特殊字符漏出上半部分,看上去就像三角形了 一.通过border属性: 我们先做一个宽和高都是10px的div,边框也是10px, 1 width: 10px;

iOS 带箭头菜单选项弹窗LFPopupMenu

一.效果图 由于是模拟器缩得比较小,一些细线可能显示不出来,不是bug哈. 二.用法 LFPopupMenuItem *item1 = [LFPopupMenuItem createWithTitle:@"小视频" image:[UIImage imageNamed:@"icon_menu_record_normal"]]; LFPopupMenuItem *item2 = [LFPopupMenuItem createWithTitle:@"拍照&quo

使用Less制作带箭头提示框

这里使用Less来制作带箭头的提示框,跟css比起来,方便多了,可以剩下很多的代码,别的不扯了,先看看效果吧. 这里我实现了4个方向的提示框,下面是具体实现代码: 提示框代码: <div class="top_prompt"> <div class="top_triangle"> <span class="line"></span> <span class="back"&g

JQuery仿最新淘宝网首页带箭头幻灯片,JQuery轮播图

JQuery代码 <script type="text/javascript"> $(function() { var $banner = $('.banner'); var $banner_ul = $('.banner-img'); var $btn = $('.banner-btn'); var $btn_a = $btn.find('a') var v_width = $banner.width(); var page = 1; var timer = null;