查看完整版本: [--
Qt绘制三维图形饼图
--]
QTCN开发网
->
Qt代码秀
->
Qt绘制三维图形饼图
[打印本页]
登录
->
注册
->
回复主题
->
发表主题
robertkun
2013-03-13 00:05
Qt绘制三维图形饼图
复制代码
void aaq::paintEvent( QPaintEvent* ev )
{
QPainter painter(this);
// 去除画笔
painter.setPen(Qt::NoPen);
// 设置反锯齿
painter.setRenderHint(QPainter::Antialiasing);
//******************************************** 圆饼图 *****************************************//
if(1)
{
// 顶层圆面
QRectF rect_top(10.0, 20.0, 280.0, 160.0);
// 底层圆面
QRectF rect_bottom(10.0, 60.0, 280.0, 160.0);
// 中间矩形
QRectF rect_midd(10.0, 100.0, 280.0, 40.0);
// 扇形起始角度
int startAngle = 230 * 16;
// 扇形覆盖范围
int spanAngle = 60 * 16;
painter.setBrush(QColor(97,35,35,255));
// 绘制底层圆面
painter.drawEllipse(rect_bottom);
// 绘制中间矩形
painter.drawRect(rect_midd);
painter.setBrush(QColor(Qt::darkYellow));
// 绘制底层扇形
painter.drawPie(rect_bottom, startAngle, spanAngle);
// 扇形的弦与弧的交点
double pi = 3.1415926;
double dx1 = rect_top.width() * 0.5 * cos(230 * pi / 180);
double dy1 = rect_top.height() * 0.5 * sin(230 * pi / 180);
double dx2 = rect_top.width() * 0.5 * cos(290 * pi / 180);
double dy2 = rect_top.height() * 0.5 * sin(290 * pi / 180);
// 求交点的坐标值
QPointF posBackCenter = QPointF(rect_top.center());
double dX1 = posBackCenter.x() + dx1 + 0.5;
double dY1 = posBackCenter.y() - dy1 + 0.5;
double dX2 = posBackCenter.x() + dx2 + 0.5;
double dY2 = posBackCenter.y() - dy2 + 0.5;
// 记录交点
QPointF topLeft = QPointF(dX1, dY1);
QPointF bottomRight = QPointF(dX2, dY2) + QPointF(0,40);
QPointF bottomLeft = topLeft + QPointF(0,40);
painter.setBrush(QColor(Qt::darkYellow));
// 绘制连接扇形的区域
QPolygonF path;
path << topLeft << QPointF(dX2,dY2) << bottomRight << bottomLeft;
painter.drawPolygon(path);
// 绘制顶层圆面
painter.setBrush(QColor(156,56,56,255));
painter.drawEllipse(rect_top);
// 绘制顶层扇形
painter.setBrush(QColor(Qt::yellow));
painter.drawPie(rect_top, startAngle, spanAngle);
}
QWidget::paintEvent(ev);
}
[attachment=9846]
工作中偶尔遇到了,觉得挺好玩,记录一下.
希望可以帮到有需要的朋友们..
ppdayz
2013-03-13 09:17
感谢楼主分享,mark 备用
XChinux
2013-03-13 09:34
顶楼主
yzcx
2013-03-14 15:33
我下了了,按说明编了,为什么我收不到任何数据
robertkun
2013-03-14 16:40
引用第3楼yzcx于2013-03-14 15:33发表的 :
我下了了,按说明编了,为什么我收不到任何数据
看一下是不是把函数搞错了??
void QWidget::paintEvent (
QPaintEvent
*
event
)
[virtual protected]
codercoder
2013-04-04 00:07
mark一下,备不时之用
weiweiqiao
2013-04-11 23:54
thank you for sharing
toby520
2013-04-18 10:20
收藏,有空研究下
share_idea
2013-04-23 20:11
不错
o7ouro
2013-04-24 00:00
mark一下
neil-wen
2013-04-26 19:51
^_^ 收藏了 ~~
tompsontan
2013-05-09 18:21
mark!
chromesync
2013-05-11 22:28
不错哦。。。很好
searchcai
2013-05-24 15:21
mark
pangzhouxing
2013-07-22 16:00
mark 备用
gwyanping
2013-07-23 13:57
打包带走咯
voidbroken
2013-07-24 12:34
顶楼主...
风吹秋叶舞
2013-07-26 15:04
好东西 收藏先
neil-wen
2013-08-14 10:02
再次收藏,多谢楼主
sduwgp
2013-10-14 16:45
mark
zxl一叶知秋
2013-10-22 19:24
楼主 你好 我想问一下 你能用Qt画一条幅值在15至20之间的由随机数产生的曲线吗?急用 谢谢
zx7415963
2013-11-13 09:52
顶一个~~~~~~~~~
liuyuanan
2014-02-14 14:16
谢谢楼主分享,可以编译通过
zztiny
2014-02-19 17:00
顶楼主!
qxiaoyu718
2014-04-04 17:24
新人 学习 收藏 备用
chelper
2014-04-24 10:25
支持下
wll19901105
2014-06-12 16:57
有时间研究一下 很不错
wayne
2014-12-27 18:31
坐标都是hard coded,要是换成可变参数,问题还是挺多的
honei_x
2015-03-25 23:01
谢谢楼主。
姜小白
2016-04-23 10:12
fsx92
2016-04-24 15:56
mark
big_mouse
2020-04-15 09:44
查看完整版本: [--
Qt绘制三维图形饼图
--] [--
top
--]
Powered by
phpwind
v8.7
Code ©2003-2011
phpwind
Gzip disabled