Qt实现中点画线算法

qt creator 画点线,跟踪鼠标 今天主要研究如何在屏幕上绘制电线 阅读详情

前提:计算机画图只能在整数坐标上画图,即点(x , y)x , y均为整数
首先 说下取值规律:
这里写图片描述
如图所示
在图中有一个点( 2 , 1.5 )。设实际需要描的点的坐标为(2 , y )
如果1<y≤1.5,则令y=1;
如果1.5<y≤2,则令y=2;

接下来:
这里我取斜率大于0小于1的情况进行具体分析

根据直线表达式,我们可以设该直线为:
ax+by+c=0,令a=y1-y2;b=x2-x1;
令f(x,y)=ax+by+c
则我们可知 : 当x=x1,y=y1时,f(x1,y1)=a*x1+b*y1+c=0
然后取x1下一个位置的中点,即点(x1+1,y1+0.5)
f(x1+1,y1+0.5)
=a(x1+1)+b(y1+0.5)+c
=ax1+by1+c+a+0.5*b
=a+0.5*b
接下来就要进行判断:
(一)当a+0.5*b≥0时,中点在直线的上方,即实际点的纵坐标比中点小,则令该点坐标为( x1+1 , y1 );
下一点的中点坐标为(x1+2,y1+0.5)
f(x1+2,y1+0.5)
=a(x1+2)+b(y1+0.5)+c
=ax1+by1+c+2*a+0.5*b
=(a+0.5*b)+a
(二)当a+0.5*b<0时,中点在直线的下方,即实际点的纵坐标比中点大,则令该点坐标为( x1+1 , y1+1 );
下一点的中点坐标为(x1+2,y1+1.5)
f(x1+2,y1+1.5)
=a(x1+2)+b(y1+1.5)+c
=ax1+by1+c+2*a+1.5*b
=(a+0.5*b)+(a+b)
令d0=a+0.5*b,d1=a,d2=a+b
则有递推式:
if(d0<0){
y++;
d0+=d2;
}else{
d0+=d1;
}
直接看代码吧:

void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);
    // 设置画笔颜色
    painter.setPen(QColor(0, 160, 230));

    int a,b,x1,x2,y1,y2,x,y,d0,d1,d2;
    double k=0;
    double kk=0;
    if(x_1-x_2==0)
        k=
QT中的QPainter画简单图-线段,矩形,椭圆,自由绘画 先看效果图 采用的是QT+VS2017进行开发。要记得引入QT的库!!!这里采用前端后端的说法只是个人觉得这样好理解一点,非专业术语哈! 我们可以把每个绘图事件定义一个类,因为都需要进行绘画,以及更新鼠标拖动结束点并且实时更新绘画效果,所以我们使用继承,即一个父类Figure,被重写的方法要加上virtual.如下 然后你要写哪种类型的图继承这个Figure父类就行。 一、 画直线Line 这... 阅读详情

相关推荐

QT画图教程7:QT实现透明度匹配及渐变等功能

首先要说明,QT对图像进行修改的类是QImage,然后之后有QPen,QBrush,QFont等类对其进行斧正,进行线条,填充,文字等的修改 下面给出几个优秀的代码实例: QT实现渐变效果: QPainter painter(image); QRadialGradient radialGradient(QPointF(x1, y1), 50, Q

阳光心态,健康人生的博客 7483

QT画图教程7 QT实现透明度匹配及渐变等功能

QT画图教程7 QT实现透明度匹配及渐变等功能

qq_44919293的博客 717

图形学大作业实战:从零实现软光栅化绘制系统

光栅化是计算机图形学将几何图元转换为屏幕像素的核心过程,也是理解GPU渲染管线的基石。从直线生成到多边形填充,Bresenham算法和扫描线填充算法以离散数学逼近连续几何,奠定了所有图像绘制系统的基础。掌握这些基础算法,不仅能解释像素级渲染的底层机制,还能为二维几何变换、裁剪等工程实践提供设计支撑,在CAD绘图、游戏引擎、数据可视化等领域均有广泛应用。本文以南京大学图形学大作业为例,完整复盘了基于Qt和C++从零实现软光栅化图形绘制系统的过程,涵盖Bresenham画线、中点画圆、Bezier曲线、有效边表

weixin_34246826的博客 248

QT实现中点画线法、DDA画线法及画圆和椭圆

QT实现DDA、中点画线法以及画圆和椭圆,点击画图按钮,然后在网格上拖动鼠标,实现画线程序,画圆和椭圆和画直线方法类似。上传的是成功运行后的QT工程文件的压缩包。

深入解析EDID中Display Descriptor Block的配置技巧与实战应用

本文深入解析EDID中Display Descriptor Block的配置技巧与实战应用。通过剖析像素时钟、有效像素、消隐区与同步脉冲等核心参数,并结合1280x720@60Hz的实战配置案例,指导开发者如何正确为定制硬件或非标准显示器编写“身份证”,避免黑屏、分辨率异常等问题,确保显示设备完美点亮。

1a2s3d4f5g的博客 878

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 226

从RJPG到温度地图:基于大疆TSDK的热红外数据精准处理与Pix4D拼接实战

本文详细解析了如何利用大疆TSDK将无人机拍摄的热红外RJPG图像精准转换为带有地理坐标的温度TIFF文件,并完成Pix4D拼接生成正射温度地图的全流程。文章重点阐述了辐射定标的原理、TSDK关键参数(测量距离、湿度、发射率、反射温度)的设置与微调方法,以及Pix4D处理中的常见报错解决方案,旨在帮助用户实现从原始数据到可分析温度地图的精准处理。

docker7nomad的博客 464

快乐8 Ai大模型XGBoost LightGBM预测系统

随机森林回归:通过集成多个决策树模型,提高预测的准确性和稳定性。XGBoost:一种基于梯度提升的强大模型,擅长处理结构化数据。LightGBM:一种高效的基于决策树算法的分布式梯度提升框架,具有快速的训练速度和低内存消耗。高预测准确率:通过集成多种模型,提供更为精准的预测结果。多种预测方法:支持同尾号、重号、温号、连号和综合预测等多种预测策略,满足不同用户的需求。实时日志:在预测过程中,用户可以实时查看系统的预测进度和结果。

m0_72636583的博客 1万+

真随机数与伪随机数

前面我们学习了LFSR,这个玩意落地到具体的应用是什么呢?没错是寄存器,这里在网络找到了几个回答,这里做个记录,下面一起来学习一下吧。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1062

【2025年华为秋招(AI)-11月19日-第二题(200分)- 终端款型聚类识别】(题目+思路+Java&C++&Python解析+在线测试)

该摘要总结了题目要求、输入输出格式、KMeans算法的实现步骤以及关键点。以下是150字内的摘要: 本文提出基于KMeans算法对终端型号进行聚类的方法。通过包间隔时长、连接持续时长、漫游前后信号强度4个特征,使用欧氏距离度量相似度。算法采用固定初始化策略(前k个样本作为初始质心),经过分配-更新迭代,直至质心移动小于1e-8或达到最大迭代次数。最终输出各簇样本数并按升序排列,解决了终端型号自动分类问题。示例显示该方法能有效识别3-4类终端,并准确统计每类数量。

m0_73659489的博客 141

【多目标跟踪】ByteTrack复现(有yolov5例子)

1.环境 ubuntu16.04 cuda10.1 cudnn7 python3.6 Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 Pillow PyYAML>=5.3 scipy>=1.4.1 tensorboard>=2.2 torch>=1.7.0 torchvision>=0.8.1 tqdm>=4.41.0 seaborn>=0.11.0 easydic

聿默的博客 1万+

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6598

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: VMware Workstation Pro 14 打开系统黑屏现象
下一篇: 2019年北京邮电大学机试题目
Jie_Fang
博客等级 码龄9年 12粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值