社区
C语言
帖子详情
请问如何画宽度大于1的虚线?
jyc_nj
2003-10-16 10:37:59
如题
...全文
67
10
打赏
收藏
请问如何画宽度大于1的虚线?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluebohe
2003-10-21
打赏
举报
回复
WINNT下,可以直接使用以下方式创建画笔
LOGBRUSH brush;
brush.lbColor=DrawColor;
brush.lbStyle=BS_SOLID;
mPen.CreatePen(PS_GEOMETRIC|PS_USERSTYLE|PS_ENDCAP_FLAT,(int)LineWide,&brush,i,PenStyle);
bluebohe
2003-10-21
打赏
举报
回复
Win98中,给DC设置合适的笔宽,选择实线,下面函数可以根据PenStyle数组给定长度值画直线。如果画曲线,需要把曲线离散成直线段,根据上次画线返回值确定本次化纤的起始值,就可以了
#include "math.h"
DWORD PenStyle[16] = {0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0};
typedef struct xyz {
double x;
double y;
double z;
} XYZ,*PXYZ,**PPXYZ;
//按照PenStyle[]画一条从p1点到p2点的直线
//例如PenStyle[0]=5,PenStyle[1]=2表示按照长度为5的实线、长度为2的间隔形成的线型画线
//_____ _____ _____ _
//并且指定从线型的何处画,例如iStart=6从Penstyle[1]处的第二个空格开始画
//iStart取值范围为0到一个线型的总长度-1
//返回值:线型总长度与剩余最后一段线长度之差,表示下一次画线应该指定的从何处开始画
int DrawLineA(CDC* pDC,POINT p1,POINT p2,int iStart)
{
int i=0;
int iEnd=0;//返回值,表示最后一段不完全的线段的长度
//计算直线长度
double dDistance=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y));
int iLineType=0;//线型的长度
if(dDistance<2)
{
for(i=0;i<16;i++)
{
if(PenStyle[i]==0)break;
iLineType+=PenStyle[i];
}
iEnd=(int(iStart-dDistance))%iLineType;
if(iEnd<0)iEnd+=iLineType;
return iEnd;
}
double ddltx[16]={0,0,0,0,//每一段线型的x距离
0,0,0,0,
0,0,0,0,
0,0,0,0};
double ddlty[16]={0,0,0,0,//每一段线型的y距离
0,0,0,0,
0,0,0,0,
0,0,0,0};
double dXScale=(p2.x-p1.x)/dDistance;//x方向长度和总长度比例
double dYScale=(p2.y-p1.y)/dDistance;//y方向长度和总长度比例
//计算每一段线型的x、y距离及线型的长度
for(i=0;i<16;i++)
{
if(PenStyle[i]==0)break;
ddltx[i]=PenStyle[i]*dXScale;
ddlty[i]=PenStyle[i]*dYScale;
iLineType+=PenStyle[i];
}
iEnd=(int(dDistance+iStart))%iLineType;
if(iEnd<0)iEnd+=iLineType;
XYZ pp={0,0,0};//第一段之前的完整线型开始点
pDC->MoveTo(p1);
int iLength=-iStart;//已经画的线段的长度
pp.x=iLength*dXScale+p1.x;
pp.y=iLength*dYScale+p1.y;
for(;;)
{
for(i=0;i<16;i++)
{
if(PenStyle[i]==0)break;
pp.x+=ddltx[i];
pp.y+=ddlty[i];
iLength+=PenStyle[i];
if(i%2==0)
{
if(iLength>0)
{
if(iLength<dDistance)
{
pDC->LineTo(pp.x,pp.y);
}
else
{
pDC->LineTo(p2);
return iEnd;
}
}
}else
{
if(iLength>0)
{
if(iLength<dDistance)
{
pDC->MoveTo(pp.x,pp.y);
}
else
{
pDC->MoveTo(p2);
return iEnd;
}
}
}
}
}
return iEnd;
}
jyc_nj
2003-10-20
打赏
举报
回复
好象不行.
wuxfBrave
2003-10-20
打赏
举报
回复
LOGPEN pen;
pen.lopnColor = RGB(255, 0, 0);
pen.lopnStyle = PS_DOT;
pen.lopnWidth = CPoint(2, 0);
HPEN hPen = ::CreatePenIndirect(&pen); //快设置宽度、线型、颜色啊……
HPEN hOld = (HPEN)pDC->SelectObject(hPen);
CPoint pt(0, 0);
for (int i = 0; i < 20; i++)
{
pDC->MoveTo(pt);
pt.x += 5;
pt.y += 5;
pDC->LineTo(pt);
pt += CPoint(1, 1);
}
pDC->SelectObject(hOld);
DeleteObject(hPen);
wuxfBrave
2003-10-20
打赏
举报
回复
自己画,一段一段的画
zhusunme
2003-10-16
打赏
举报
回复
setlinestyle(1,upattern,3);
试试看
zgrpmc
2003-10-16
打赏
举报
回复
再试试
::CreatePenIndirect
看行否?
jyc_nj
2003-10-16
打赏
举报
回复
这样作,在线宽大于1时,只能画实线.
zgrpmc
2003-10-16
打赏
举报
回复
HPEN hPen = ::CreatePen(...); //快设置宽度、线型、颜色啊……
HPEN hOld = ::SelectObject(hPen);
::LineTo(...);//画线咯
jyc_nj
2003-10-16
打赏
举报
回复
怎么找不到这个函数? 我说的Win32 API
海尔智能电视刷机数据 U49A5 机编DH1W80A0305 务必确认机编一致 强制刷机 整机USB升级主程序
务必确认机身编号与文件名机编一致,如不一致,请勿下载 机身编号一般在机子背面的贴纸上 升级方法: 1、下载数据,压缩包解压,将“Haier638Upgrade.bin”文件拷贝到U盘根目录下(U盘要求使用FAT32格式,建议4G-8G的品牌U盘,刷机成功率会高) 2、电视关机拔下电源,插入U盘,按住机身按键板上的“菜单”键不放,插电开机,直到LED灯开始闪表示升级正在进行,升级成功后机器会自动重起。 3、重启之后,重新交流上电,升级完成。 注意: 1、升级到结束,大约需要8-30分钟,中途绝对不能断电 2、升级重启第一次进入系统,请等完全正常进入开机桌面之后,才能拨下U盘
c语言c++项目源代码_c语言对自己电脑系统测试.rar
**C语言电脑系统测试项目** 本项目是一个基于C语言的实用工具,旨在为您的电脑系统提供全面的性能测试与评估。通过执行一系列精心设计的测试用例,该工具能够评估您的电脑在处理器速度、内存管理、磁盘性能以及网络连接等方面的表现。 项目的核心功能包括: 1. **处理器性能测试**:通过执行复杂的算法和计算任务,评估处理器的运算速度和效率。 2. **内存测试**:检查内存分配、读写速度和稳定性,确保系统的内存管理达到最佳状态。 3. **磁盘性能测试**:评估硬盘或固态硬盘的读写速度、I/O性能和文件系统效率。 4. **网络性能测试**:测量网络连接的速度和稳定性,包括上传和下载速度以及延迟。 此外,该项目还提供了详细的测试报告功能,帮助您全面了解系统的优势和潜在瓶颈。测试结果以直观易懂的图表和数字形式呈现,便于分析和解读。 此项目采用模块化设计,方便您进行二次开发和定制,以满足特定需求。无论是硬件评测爱好者还是系统管理员,都能从该项目中受益良多。
pypy3.8-v7.3.6rc3-s390x.tar.bz2
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
强化学习的Q-Learn算法ppt资源
强化学习的主要算法:包括Q-learning、SARSA、DQN、A3C、TRPO、PPO和SAC等。这些算法各有特点,适用于不同的场景和任务。例如,Q-learning和SARSA是基于值函数的强化学习算法,旨在学习最优策略以最大化累积奖励;而DQN则是深度强化学习算法,使用神经网络来估计值函数,并通过反向传播算法更新网络参数。 强化学习在多个领域具有广泛应用。在自动驾驶系统中,强化学习可以帮助车辆感知周围环境并做出决策,实现自主行驶。在医疗领域,强化学习可以用于辅助医生进行病例分析、诊断和治疗方案制定,提高医疗服务的准确性和效率。此外,强化学习还在智能物流和仓储管理、金融投资决策等领域发挥着重要作用。
工作汇报 年终总结28.pptx
封面 标题:基于物联网的智能家居系统年度总结 报告人信息:[姓名]、[职位/角色]、[所属机构/公司] 日期:[具体日期] 目录 引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章