双缓冲学习总结一网格(根据教程学习)
来源:互联网 发布:人工智能的威胁 编辑:程序博客网 时间:2024/06/08 03:25
第一步:创建工程plotter
第二步:根据效果图,写上变量和类:
第三步:横纵坐标
.h文件中
class PlotSettings
{
public:
PlotSettings();
void scroll(int dx, int dy);
void adjust();
double spanX() const { return maxX - minX; } //计算横坐标跨度
double spanY() const { return maxY - minY; } //计算纵坐标跨度
double minX;//横坐标最小
double maxX;//横坐标最大
int numXTicks;//网格
double minY;//纵坐标最小
double maxY;//纵坐标最大
int numYTicks;//网格
private:
static void adjustAxis(double &min, double &max, int &numTicks);//取整计算
};
.cpp文件中:
1.设置调色板颜色为黑色:
setBackgroundRole(QPalette::Dark);//调色板背景色改为深色
setAutoFillBackground(true);//自动的做出来
2.绘制网格(drawGrid):
准备:
QRect rect(Margin,Margin,width()-2 * Margin,height()-2 * Margin);//检查窗口是否小
if(!rect.isValid())//无效则直接return
return;
PlotSettings settings = zoomStack[curZoom];//把settings取出
//准备画笔
QPen quiteDark = palette().dark().color().light();//选择深色画笔
QPen light = palette().light().color();//选择浅色画笔
画横坐标:
for(int i =0;i<=settings.numXTicks;++i)
{
int x = rect.left() + i * rect.width()/settings.numXTicks;
double label = settings.minX + i * settings.spanX()/settings.numXTicks;
painter->setPen(quiteDark);
painter->drawLine(x, rect.top(), x, rect.bottom());
painter->setPen(light);
painter->drawLine(x, rect.bottom() - 5, x, rect.bottom() + 5);
painter->drawText(x - 50,rect.bottom() + 5, 100, 20,
Qt::AlignCenter|Qt::AlignTop, QString::number(label));
}
画纵坐标:
for(int j=0;j<=settings.numYTicks;++j)
{
int y = rect.bottom() - j * rect.height()/settings.numYTicks;
double label = settings.minY + j * settings.spanY()/settings.numYTicks;
painter->setPen(quiteDark);
painter->drawLine(rect.left(), y, rect.right(), y);
painter->setPen(light);
painter->drawLine(rect.left() - 5, y, rect.left(), y);
painter->drawText(rect.left() - Margin, y - 10, Margin - 5, 20,
Qt::AlignRight|Qt::AlignVCenter, QString::number(label));
}
0 0
- 双缓冲学习总结一网格(根据教程学习)
- Ignite 数据网格快速学习(一)
- Ignite SQL网格快速学习(一)
- svn总结学习教程文件(一)
- 学习Emacs系列教程(九):缓冲管理
- 学习Emacs系列教程(九):缓冲管理
- Java学习笔记(一)网格袋布局
- Direct3D学习手记十:网格一【手动创建网格】
- Android植物大战僵尸教程学习总结(一)
- 学习ASP .NET MVC5官方教程总结(一)入门
- STM32F103mini教程学习总结与心得(一)
- Bootstrap 学习之 (一) ------ 网格系统
- 对缓冲(caching)技术的一些学习总结
- 对缓冲(caching)技术的一些学习总结
- 六 Gazebo学习总结之附加网格
- 根据metalink脚本学习undo(一)
- 学习OpenGL(二)双缓冲绘图
- 学习总结(一)
- C++第七周mooc在线测评—指针、变量和函数
- Oracle数据库语句大全
- <li>做的菜单栏,怎么让<li>整个区域都能触发点击事件
- 该怎么对ZBrush中的遮罩进行反选
- 第七周项目4-队列数组
- 双缓冲学习总结一网格(根据教程学习)
- Java-----隐藏手机号中间部分
- 解决ubantu下ST3无法输入中文
- 一些‘优雅’的js写法
- 图片上传工具类
- 怎么实现代码的重用性?
- Java 7并发编程(小结)
- plsqldev连接远程oracle
- jsp页面request.getAttribute("employeeList") 为null