找回密码
 立即注册
收起左侧

请教QPainter绘制曲线的问题

11
回复
12106
查看
[复制链接]
累计签到:3 天
连续签到:1 天
来源: 2015-11-11 11:04:50 显示全部楼层 |阅读模式
10Qter豆
从QT3 升级到QT5,绘制曲线时,除了我要显示的曲线外,总是会多出一条曲线,之前用的drawPolyLine(const QPoint*,int)这个函数,后来为找出原因简化了程序,只画两个点,分别用DrawLine和DrawLines两个函数,发现显示的结果就不一样了,DrawLine能正常显示曲线,如图1,DrawLines就会多出一条线,如图2.


请各位大神赐教,小妹我调了一周了,也没找出来原因。
图一 :
pDrawDC->m_pPainter->drawLine(500, 100, 600, 100);
图二:
QPoint pPoint[2] = { QPoint(500, 100), QPoint(600, 100) };
pDrawDC->m_pPainter->drawLines(pPoint,2);


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

这是测试代码,直接使用QPainter在QWidget 的绘制的情况。绘画代码是写在painterevent中的
回复

使用道具 举报

累计签到:191 天
连续签到:1 天
2015-11-11 11:04:51 显示全部楼层
这是测试代码,直接使用QPainter在QWidget 的绘制的情况。绘画代码是写在painterevent中的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:191 天
连续签到:1 天
2015-11-13 13:50:14 显示全部楼层
本帖最后由 Youji 于 2015-11-13 13:56 编辑

drawLines(pPoint,2);    //参数 2 表示直线的个数
drawLines(pPoint);      // 根据对点画直线的正确打开方式
还有你应该还是学生吧?
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-11-16 18:39:05 显示全部楼层
本帖最后由 civiwm 于 2015-11-17 16:40 编辑

drawLines 后面的那个参数是线的个数,我之前把帮助文档看错了
可是,我用drawPolyLine这个函数,画上面的两个点,出来的线也不对,还是多一条线

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-11-16 18:40:44 显示全部楼层
本帖最后由 civiwm 于 2015-11-17 16:41 编辑
Youji 发表于 2015-11-13 13:50
drawLines(pPoint,2);    //参数 2 表示直线的个数
drawLines(pPoint);      // 根据对点画直线的正确打开 ...

drawLines 后面的那个参数是线的个数,我之前把帮助文档看错了
可是,我用drawPolyLine这个函数,画上面的两个点,出来的线也不对,还是多一条线。
回复

使用道具 举报

累计签到:19 天
连续签到:1 天
2015-11-16 22:37:07 显示全部楼层
好复杂啊,发现一只大神 = =
回复

使用道具 举报

累计签到:191 天
连续签到:1 天
2015-11-19 20:22:01 显示全部楼层
qt5中,点序列使用QPolygon。使用Qpainter->darwPolyLine(p1,p2)没有问题。
使用的点数组的对点声明QPoint pPoint[2] = { QPoint(500, 100), QPoint(600, 100) },方法调用都不能通过
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-11-23 09:42:05 显示全部楼层
本帖最后由 civiwm 于 2015-11-23 09:44 编辑
Youji 发表于 2015-11-19 20:22
qt5中,点序列使用QPolygon。使用Qpainter->darwPolyLine(p1,p2)没有问题。
使用的点数组的对点声明QPoint  ...

代码我没完全贴上来,我用的是void QPainter::drawPolyline(const QPolygon & points) 这个函数,我先new了一个QPolygon类型的指针,之后调用setPoint,给这指针设置了两个点。

另外,你说的Qpainter->darwPolyLine(p1,p2)这句,这个函数没有这样的入口参数

回复

使用道具 举报

累计签到:191 天
连续签到:1 天
2015-11-23 14:41:44 显示全部楼层
把相关的代码给我嘛,你在什么上画的线?我和你用的是同一个函数。void QPainter::drawPolyline(const QPolygon & points)这个方法的参数不是指针类型的,编译怎么能通过?
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-11-24 09:47:21 显示全部楼层
本帖最后由 civiwm 于 2015-11-24 10:09 编辑
Youji 发表于 2015-11-23 22:05
这是测试代码,直接使用QPainter在QWidget 的绘制的情况。绘画代码是写在painterevent中的 ...

在QFrame上画的
QPolygon *pPointArray = NULL;
pPointArray = new QPolygon(10);
int pointCount = 0;               
int32 a[2][2] = { { 500, 100 }, { 600, 100 } };
for (int32 j = 0; j < 2; j++)
{
  pPointArray->setPoint(pointCount, a[j][0], a[j][1]);  
  pointCount++;
}
m_pPainter->drawPolyline(*pPointArray);
delete pPointArray;
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-11-24 10:08:50 显示全部楼层
本帖最后由 civiwm 于 2015-11-24 10:13 编辑
Youji 发表于 2015-11-23 22:05
这是测试代码,直接使用QPainter在QWidget 的绘制的情况。绘画代码是写在painterevent中的 ...

找到原因了,最开始我new QPolygon(10),问题出在这个10上了,改成2就好了,无语了,折腾了半天是这个原因,以前的QT3的老程序,new出来的QPolygon也没给每个点赋值啊 怎么就没多出来一条线呢,我再仔细研究下。十分感谢,万分感谢~~~
回复

使用道具 举报

累计签到:191 天
连续签到:1 天
2015-11-24 11:16:14 显示全部楼层
civiwm 发表于 2015-11-24 10:08
找到原因了,最开始我new QPolygon(10),问题出在这个10上了,改成2就好了,无语了,折腾了半天是这个原因 ...

哈哈,是不是感觉绕了一大圈又回到原处啦~Qt3到Qt5差别太大,有时候想移植都无从下手。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了