怎样才能作出具有橡皮泥似的线条?
大家好, 我想作一条具有橡皮泥似的线条, 也就是当我在线条的中间用鼠标来拉伸时,它会根据鼠标的位置来发生变形,注意,它的连接处要保持圆滑的过渡, 能说说它的原理吗? 问题点数:20、回复次数:9Top
1 楼zbc(修身养息,百战不怠)回复于 2002-11-01 20:51:49 得分 0
有没搞错, 怎么没人啊?Top
2 楼weibz0525(小虫)回复于 2002-11-02 07:27:24 得分 0
一时说不清楚,好多,
有代码,你要不要?留下emailTop
3 楼xiaodongisme(散步的鱼)回复于 2002-11-02 08:31:55 得分 0
也给我一份吧,拜托
xiaodong_ishere@163.comTop
4 楼zbc(修身养息,百战不怠)回复于 2002-11-03 16:32:57 得分 0
谢谢,我要,eml为zbcgsx@163.netTop
5 楼TopCat(令狐虫)回复于 2002-11-03 18:12:14 得分 20
没必要搞得这么神秘吧?
其实贝塞耳曲线(Bezier Curve)在Windows里有内建的支持,有两个API函数PolyBezier和PolyBezierTo就可以画贝塞耳曲线。
在BCB的TCanvas里同样对这两个函数进行了封装。下面是一个用PolyBezier函数画曲线的例子:
//以下仅为测试数据
TPoint point[4];
point[0] = TPoint(0, 100);
point[1] = TPoint(130, 300);
point[2] = TPoint(140, 10);
point[3] = TPoint(200, 100);
Canvas->PolyBezier(point, 3);
众所周知,贝塞耳曲线用四个点确定一条曲线,因此我们定义了一个4位的TPoint数组。其中第一个点决定曲线的起点,第四个点决定曲线的终点。第二和第三个点决定曲线的曲率,在程序里,我们只要想办法决定四个点的位置就可以画出贝塞耳曲线了,一点都不难。(决定四点位置的一种方法可以参考画图程序里画曲线的方法。更好的方法是Photoshop里路径的画法——总之是由你的聪明才智所决定了。)
PolyBezier的第一个参数就是这个TPoint数组,第二个参数是最后一点的Index值,所以是3。
PolyBezierTo函数跟PolyBezier区别不大,唯一的区别就是只需要三个点坐标,第一个点的坐标由之前调用的MoveTo函数决定(想想LineTo是怎么做的)。当然,对应的,第二个参数的值也变成了2。Top
6 楼bufanxiong(bufanxiong)回复于 2002-11-03 19:05:04 得分 0
to weibz0525(小虫) :
你好!
你的代码我也想学习学习:)
bufanxiong@sohu.comTop
7 楼weibz0525(小虫)回复于 2002-11-03 19:17:50 得分 0
我从书上扒的,真不好意思,呵呵,要的就给。Top
8 楼weibz0525(小虫)回复于 2002-11-04 07:10:21 得分 0
给你们发送都失败,不知为何?Top
9 楼tjzzx888(青草)回复于 2002-11-04 09:05:51 得分 0
to weibz0525(小虫) :
你好!
也给我一份吧
tjzzx8@eyou.comTop




