计算机图形学 线宽和线型处理.ppt

第五讲 线宽和线型处理 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)” 当比较接近水平的线与比较接

文档评论(0)

1亿VIP精品文档

相关文档