3D金字塔图(2)
来源:互联网 发布:网络yy语音授课是什么 编辑:程序博客网 时间:2024/05/19 03:42
以前画过一个金字塔图,效果不是很好(有兴趣的话可以看看我的博客http://blog.csdn.net/chyuanrufeng/article/details/76473056)。这次这个是从另外一个角度观察的,配色自行修改。效果如下:
核心代码:
void test1::drawPyramid3( QPainter &painter ){ int w = width(); int h = height(); int x= w/2; QPointF toppoint(x,h*0.2); QPointF midbottompoint(x,h*0.9); QPointF leftbottompoint(w*0.2,h*0.85); QPointF rightbottompoint(w*0.8,h*0.85); int laycount = 4; int hsetp = (leftbottompoint.y()-toppoint.y())/laycount; float wsetp = (rightbottompoint.x() - leftbottompoint.x())/2; for (int i = laycount ; i > 0; --i) { float bpy = (midbottompoint.y() - toppoint.y())*i/laycount; float tpy = (midbottompoint.y() - toppoint.y())*0.9/laycount; QPointF tmpmidbp(x,toppoint.y()+bpy); //底中间点 QPointF tmpmidtp(x,toppoint.y()+bpy-tpy); //上部中间点 float txw = wsetp*i*0.95/laycount ; float hlength = hsetp*i; QPointF tmpleftbp(x-txw, toppoint.y() + hlength); //底部左侧点 QPointF tmprightbp(x+txw,toppoint.y() + hlength); //底部右侧点 txw = wsetp*(i-1)/laycount; //hlength = hsetp*(i-1); QPointF tmplefttp(x-txw,toppoint.y() + hlength-hsetp*0.9); //上部左侧点 QPointF tmprighttp(x+txw,toppoint.y() + hlength-hsetp*0.9); //上部右侧点 //左侧面 painter.save(); QPolygonF leftpolygon; leftpolygon<< tmpmidbp << tmpmidtp << tmplefttp << tmpleftbp; QLinearGradient leftgradient(tmpmidbp.x(),tmpleftbp.y(),tmplefttp.x(),tmplefttp.y()); //leftgradient.setColorAt(0,QColor("#00A8E1").lighter(120)); leftgradient.setColorAt(0,QColor("#FF0000").lighter(120)); leftgradient.setColorAt(0.5,QColor("#00A8E1").dark(100)); leftgradient.setColorAt(1,QColor("#246B95")); painter.setBrush(leftgradient); painter.drawPolygon(leftpolygon); painter.restore(); //右侧 painter.save(); QPolygonF rightpolygon; rightpolygon << tmpmidbp << tmpmidtp <<tmprighttp << tmprightbp; QLinearGradient rightgradient(tmpmidbp.x(),tmpmidbp.y(),tmplefttp.x(),tmplefttp.y()); rightgradient.setColorAt(0,QColor("#78DAFF").darker(120)); rightgradient.setColorAt(0.5,QColor("#00A8E1").dark(100)); rightgradient.setColorAt(1,QColor("#78DAFF")); painter.setBrush(rightgradient); painter.drawPolygon(rightpolygon); painter.restore(); //顶 painter.save(); QPolygonF toppolygon; toppolygon << tmpmidtp <<tmprighttp << tmplefttp; QLinearGradient topgradient(tmpmidbp.x(),tmpmidbp.y(),tmplefttp.x(),tmplefttp.y()); topgradient.setColorAt(0,QColor("#78DAFF").darker(120)); topgradient.setColorAt(0.5,QColor("#00A8E1").dark(100)); topgradient.setColorAt(1,QColor("#78DAFF")); painter.setBrush(rightgradient); painter.drawPolygon(toppolygon); painter.restore(); }}
阅读全文
0 0
- 3D金字塔图(2)
- Qt实现金字塔图(3D和2D)
- HighCharts之2D金字塔图
- 3D 空间金字塔采样
- 5-2 打印多层金字塔(明天)
- 附源码】【Android 3D OpenGL】开发之三——漂亮的金字塔【MacroCheng原创】
- 暑假编程训练---D:打印金字塔
- 字母金字塔(类同数字金字塔)
- 金字塔星号图
- 金字塔(函数调用)
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔
- 金字塔
- 金字塔
- Prometheus安装和基本配置
- window 下完全卸载Cygwin最简单方法
- java_EE 自动封装表单数据
- 什么是JSP;JSP的模板修改和注释
- table 'mysql.proc' doesn't exist问题解决
- 3D金字塔图(2)
- MySQL(四)源码安装
- 模板:树链剖分
- J2EE-线程
- 7-15(查找) 航空公司VIP客户查询(25 分)
- javascript控制点击一次按钮实现元素的显示隐藏
- 针对移动终端(ARM/Android/TEE)的Rowhammer攻击与电源管理攻击研究
- iOS【NSTimer到底准不准?】
- Linux shell 运算