- 121
- 0
- 约2.38千字
- 约 19页
- 2017-05-29 发布于北京
- 举报
第五讲 线宽和线型处理 1. 直线线宽的处理 (1)线刷子 生成具有一定宽度的直线,可以沿着生成直线时获得的像素点,通过移动一把具有 一定宽度的“线刷子”来实现。 假设直线斜率在[-1,1]之间,可把线刷子定成垂直方向,并将线刷子中心点对准直线上某一像素点,然后将线刷子沿直线运动就刷出了一条具有一定宽度的直线。 当直线斜率不在[-1,1]之间时,只需把线刷子运动方向改为水平方向即可。 LineBrush (int x,int y,int color) {Drawpixel(x,y,color); Drawpixel(x+1,y,color); Drawpixel(x-1,y,color); Drawpixel(x+2,y,color); Drawpixel(x-2,y,color); Drawpixel(x-3,y,color); Drawpixel(x+3,y,color); } 线刷子的特点: 实现简单、效率高。 斜线与水平(或垂直)线粗细不均匀。 当线宽为偶数个象素时,线的中心将偏移半个象素。 利用线刷子生成线的始末端总是水平或垂直的,看起来不太自然,在两条直线的连接处会产生缺口; 解决:添加“线帽(line cap)” 当比较接近水平的线与比较接近垂直的线汇合时,汇合处外角将有缺口。 解决: 斜角连接(miter join) 圆连接(round join) 斜切连接(bevel join) (2)正方形刷子 把边宽为指定线宽的正方形的中心沿直线平行移动,即可获得具有线宽的线条。 实现正方形刷子最简单的办法是:把正方形中心对准单象素宽的线条上各个元素,并把正方形内的象素全部置成线条颜色。这种简单方法将重复地写象素。这是因为相邻两象素的方形一般会重叠。 方刷子的特点: 简单,容易实现。 效率低。 线的末端总是水平或垂直的; 在两条直线的连接处会产生缺口; 宽度不均匀; 宽度为偶数时无法实现。 方刷子绘制的线条自然地带有一个“方线帽” SquarBrush (int x,int y,int color) {Drawpixel(x,y,color); Drawpixel(x+1,y,color); Drawpixel(x-1,y,color); Drawpixel(x+1,y+1,color); Drawpixel(x-1,y+1,color); Drawpixel(x+1,y-1,color); Drawpixel(x-1,y-1,color); Drawpixel(x,y-1,color); Drawpixel(x,y+1,color); } 为了避免重复写象素,可以采用与活性边表类似的技术,为每条扫描线建一个表,存放该扫描线与线条的相交区间左右端点位置,在每个象素使用正方形刷子时,用该方形与扫描线的相交区间端点坐标去更新原表内端点数据。 3. 其它线宽处理方式 区域填充 改变刷子形状: 2. 圆弧线宽的处理 为生成具有一定宽度的圆弧,可考虑与生成具有一定宽度的直线类似的方法,即用“刷子”来刷出具有宽度的圆弧。 而当采用正方形刷子时无需改变刷子的方向,只需沿着圆弧像素,把刷子中心对准圆弧移动刷子即可,这样刷出来的直线在接近水平或垂直方向时最细,而且斜率为正负1时最粗。 此外,还可以采用填充的方式,即先绘制出圆弧的内、外边界,然后在内外边界之间进行填色。 3.线型的处理 有时需绘制特殊线型的线条,如虚线、点划线等,以便区分各种不同的意义。如采用实线表示立体线框中可见的轮廓线,用虚线表示不可见的轮廓线,用点划线表示中心线等。 线型可用一个布尔值的数组来存放。例如,用一个18位整数可以存放18个布尔值,用这样的整数存放线型定义时,线型必须以18个象素为周期进行重复。 将写像素语句 DrawPixel(x,y,color) 更改为: if (位串[i%18]) DrawPixel(x,y,color) 其中i为循环变量,每处理一个象素递增1。 缺点: 采用固定划线长度的实现方法会在不同直线方向上产生出不等长的划线段。原因在于相同个数的象素沿不同方向将生成不同长度的线段。 解决方法: 为实现精确的线型定义,应按照直线的斜率调整线型定义数组中实线段和空白段的象素数目。 或对象素形成的线段
您可能关注的文档
- 解析几何坐标系变换.ppt
- 解析女性子宫下垂的症状.ppt
- 解腐蚀15表面覆盖层-金属覆盖层.ppt
- 解读《综合教务管理系统》运行操作规程及相关工作要点教.ppt
- 解读淘气堡对儿童智力开发的意义.ppt
- 解读芮成钢成名之路.ppt
- 解读诗歌方法指导 (4).ppt
- 解释下面字词的意思 (2).ppt
- 解释下面字词的意思.ppt
- 解题技巧(以细胞代谢为例).ppt
- 2026及未来5年中国消防联动台行业发展研究报告.docx
- 2026及未来5年中国柴油发动机凸轮轴行业发展研究报告.docx
- 2026及未来5年中国负压加硫机行业发展研究报告.docx
- 2026及未来5年中国无缝铜管行业发展研究报告.docx
- 2026及未来5年中国病房电子传呼器行业发展研究报告.docx
- 2026年及未来5年内中国钻座行业投资前景及策略咨询研究报告.docx
- 2025年中国怪形假山石市场调查研究报告.docx
- 2026年及未来5年内中国拖拉机后盖总成行业投资前景及策略咨询研究报告.docx
- 2026及未来5年中国八字尾插行业发展研究报告.docx
- 2025年中国木迷宫市场调查研究报告.docx
最近下载
- (2026春新版)人教版二年级数学下册全册PPT课件.pptx
- 2025年青岛职业技术学院单招(语文)测试模拟题库1套.docx VIP
- 2023年山东理工职业学院单招综合素质考试试题及答案解析.docx VIP
- 施工单位图纸会审要点培训PPT课件.pptx
- DBJ T 13-437-2023 装配式钢结构基坑支护技术标准.pdf VIP
- 戊二醇系列产品及其衍生物项目环评环境影响报告书.pdf
- 2024年山东理工职业学院单招综合素质考试模拟试题及答案解析.docx VIP
- 小学生必背歇后语100条.pdf VIP
- 2023青岛职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析.docx VIP
- 5G优化案例:5G网络覆盖优化经验总结.pdf VIP
原创力文档

文档评论(0)