当前位置:编程学习 > C#/ASP.NET >>

「玩一玩」带节点的曲线,可以鼠标拖动节点,类似PS

酒喝多了,吐槽:无聊,很无聊。。

整个论坛就没好玩的,

新手就只有问题问题问题问题问题。

高手就只有语重心长语重心长语重心长语重心长。

辩论也只有对骂对骂对骂对骂对骂对骂。

有那精力有那水平想点东西来做好不好?就剩我这种门外汉瞎j8在弄在玩。

我承认我是闲的大把时间玩,你们上班都很累了,你们做的都是拿来赚钱的,不能放出来。

累了你上店里放松去,别上网啊。

毛伯伯甩出去小妹妹「大哥」「老公」「亲爱的」叫得亲热,比这听「前辈」「高人」「大牛」爽多了。

谁来介绍点乐子啊,人生太无聊了。我的智商已经无限低了。

………………

下周开始戒赌戒票。。去大学蹭课。。



先来PS的


再来刚做的,极其简单。


思路很简单

1.曲线由一组Point表示节点
2.鼠标移动节点实际是修改单个Point
3.插入删除Point
4.一个节点是一个手柄Handle,就是一个小方块
5.在Paint里画出一条经过所有节点的曲线DrawCurve
6.随便画个十字准星表示当前节点
7.鼠标按下,判断是否在某个已有节点里,如果有,标记之,否则添加新节点
8.鼠标按下且移动,如果已有节点,则节点坐标为鼠标坐标
9.刷新画图

懒得写分析什么的了。

画图的时候分层就行。

背景
准星
曲线
手柄

代码贴出来自己看。

节点:
 List<Point> points;


手柄
        Rectangle getHandle(Point p)
        {
            Rectangle rect = new Rectangle(
                p.X - 3,
                p.Y - 3,
                6,
                6);
            return rect;
        }


判断一个点Point在不在手柄里
        bool isInside(Point p, Rectangle rect)
        {
            return rect.Contains(p);
        }


判断点在不在曲线的某个节点里

        bool isHandle(Point p)
        {
            foreach (Point pt in points)
            {
                if (isInside(p, getHandle(pt)))
                {
                    downIndex = points.IndexOf(pt);
                    downPoint = pt;
                    current = pt;
                    return true;
                }
            }

            return false;
        }


画手柄
        void drawHandle(Graphics g, Point p)
        {
            if (points.IndexOf(p) == downIndex)
                g.FillRectangle(
                    Brushes.Black,
                    getHandle(p));
            else
                g.DrawRectangle(
                    Pens.Black,
                    getHandle(p));
        }


画曲线
        void drawCurve(Graphics g)
        {
            g.DrawCurve(Pens.Black, points.ToArray());
        }


画十字准星(交叉线)
        void drawCrosshair(Graphics g, Point p)
        {
            g.DrawLine(
                Pens.Gray,
                0, p.Y,
                clientRect.Width,
                p.Y);
            g.DrawLine(
                Pens.Gray,
                p.X,
                0,
                p.X,
                clientRect.Height);
        }


拖动
        protected override void OnMouseMove(MouseEventArgs e)
        {
            mousePoint = e.Location;
            if (mouseDown)
            {
                if (Current != null)
                {
                    Current = mousePoint;
                }

                Refresh();
            }
        }


完整代码看这里

下载源码 --------------------编程问答-------------------- 贝塞尔曲线? --------------------编程问答-------------------- 野比小王子 --------------------编程问答-------------------- --------------------编程问答-------------------- 早起 看一看 --------------------编程问答-------------------- 野比 --------------------编程问答-------------------- --------------------编程问答-------------------- 我了个去,CSDN应该给比比开个专版了。 --------------------编程问答-------------------- 论坛多一些野比小王子

少一些二13的XXX之王

将是一件不错的事情。 --------------------编程问答-------------------- 下载不了源码。  公司没提供下载权限的孩子伤不起。 --------------------编程问答-------------------- 吐槽威力强大,全体中枪。。 --------------------编程问答-------------------- 神奇的曲线 --------------------编程问答-------------------- --------------------编程问答-------------------- 恩 可以 --------------------编程问答-------------------- 无力哥…… --------------------编程问答-------------------- 不错哦 支持下 现在用不上 估计以后可以会用到 --------------------编程问答-------------------- 前一段时间也写过一个类似的,
其实实现起来不难,就是要好好理解下贝塞尔曲线 --------------------编程问答-------------------- 虽然看不懂也来瞅瞅~~~ --------------------编程问答-------------------- 楼主的文章有趣、有文采! --------------------编程问答-------------------- =.= 我就是来瞅瞅=.=  --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 貌似我的最近2贴,对LZ影响很大啊 --------------------编程问答-------------------- 求weiguan --------------------编程问答-------------------- 带走了!! 
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 计算几何大牛:http://www.codeproject.com/KB/recipes/Wykobi.aspx

排料大全.chm 来自美国斯泰森大学(Stetson University) 
http://download.csdn.net/detail/zhao4zhong1/4055807

够楼主玩多长时间捏?
(^_^) --------------------编程问答-------------------- --------------------编程问答-------------------- 太强悍了。 --------------------编程问答-------------------- 才醒……1点钟又被叫出去宵夜……8张毛伯伯又没了…… --------------------编程问答--------------------
引用楼主  的回复:
酒喝多了,吐槽:无聊,很无聊。。

整个论坛就没好玩的,

新手就只有问题问题问题问题问题。

高手就只有语重心长语重心长语重心长语重心长。

辩论也只有对骂对骂对骂对骂对骂对骂。

有那精力有那水平想点东西来做好不好?就剩我这种门外汉瞎j8在弄在玩。

我承认我是闲的大把时间玩,你们上班都很累了,你们做的都是拿来赚钱的,不能放出来。

累了你上店里放松去,别上网啊。
……

做个会打架的机器人吧~比如谁在论坛骂我,这个机器人就能飘洋过海找到他给他两巴掌,然后飞走
--------------------编程问答--------------------
引用 31 楼  的回复:
做个会打架的机器人吧~比如谁在论坛骂我,这个机器人就能飘洋过海找到他给他两巴掌,然后飞走


…… 冤冤相报何时了……

  --------------------编程问答-------------------- --------------------编程问答-------------------- 今天专门上论坛看看野比有没有新的文章,居然给我看到了,支持 --------------------编程问答--------------------
引用 22 楼  的回复:
貌似我的最近2贴,对LZ影响很大啊


倒不是因为这个。。这两天玩得精神空虚了。。逛论坛全是问题贴,对骂贴。你说骂得精彩点也还挺有意思,骂得既没水平又没内涵,而且骂个几十楼就萎了,毫无激情。。我在后面煽风点火都没用,没一个站得起来的。。

还是我说的,大家都累了,都在店里玩,偶尔来这也懒得分享了。。



……

我觉得我的智商已经无限低了。。 --------------------编程问答--------------------
引用 34 楼  的回复:
今天专门上论坛看看野比有没有新的文章,居然给我看到了,支持


我会越发越少的。。 --------------------编程问答-------------------- CSDN不是大牛们该来的地方... --------------------编程问答--------------------
引用 37 楼  的回复:
CSDN不是大牛们该来的地方...


说对一半,大牛上CSDN只是来看业内新闻的,不逛论坛。 --------------------编程问答--------------------
引用 38 楼  的回复:
引用 37 楼  的回复:
CSDN不是大牛们该来的地方...


说对一半,大牛上CSDN只是来看业内新闻的,不逛论坛。


所以我火星了。。不在这行不懂行情。。把这里当兴趣小组。。 --------------------编程问答-------------------- 这是LZ的爱情线或者事业线 --------------------编程问答--------------------
引用 40 楼  的回复:
这是LZ的爱情线或者事业线


就像一碗炖烂的粉条。。 --------------------编程问答-------------------- 呵呵,不错.野比,你要是闲的无聊画个三测单 --------------------编程问答-------------------- 顺便测测体温脉搏呼吸 --------------------编程问答-------------------- 三测单。。没什么可玩的特点。。 --------------------编程问答--------------------
引用 1 楼  的回复:
贝塞尔曲线?


Bezier曲线的节点不在曲线上,除了两端以外。 --------------------编程问答--------------------
引用 45 楼  的回复:
引用 1 楼  的回复:

贝塞尔曲线?


Bezier曲线的节点不在曲线上,除了两端以外。


这不是贝塞尔。。 --------------------编程问答-------------------- 不错哦 支持下 --------------------编程问答--------------------
引用 35 楼  的回复:
引用 22 楼 的回复:

貌似我的最近2贴,对LZ影响很大啊


倒不是因为这个。。这两天玩得精神空虚了。。逛论坛全是问题贴,对骂贴。你说骂得精彩点也还挺有意思,骂得既没水平又没内涵,而且骂个几十楼就萎了,毫无激情。。我在后面煽风点火都没用,没一个站得起来的。。

还是我说的,大家都累了,都在店里玩,偶尔来这也懒得分享了。。



……

我觉得我的智商已经无限低了。。……
支持下LZ

CSDN整天地吵闹也是一大风景。。。能丰富大家的业余生活。。。 --------------------编程问答-------------------- 有木有无聊的?去回答俺几个问题呗。

最近提了几个问题,都把问题点数设为最高,也尽量把问题描述清楚。但是——
咋就一个回复都没有呢?是俺提问的方式不对么?没回复连结贴都结不了啊
--------------------编程问答-------------------- 小野我觉得你应该去MSDN论坛上去看看真正的大牛 --------------------编程问答-------------------- 新人菜鸟,来观摩学习下  支持下 顶 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 36 楼  的回复:
引用 34 楼  的回复:

今天专门上论坛看看野比有没有新的文章,居然给我看到了,支持


我会越发越少的。。


为啥越发越少? --------------------编程问答-------------------- 真棒!野比又有新作了! --------------------编程问答-------------------- 好东东啊~ 正学作图呢 --------------------编程问答--------------------
引用 50 楼  的回复:
小野我觉得你应该去MSDN论坛上去看看真正的大牛



对我来说都一样,那牛人是多,一样没人整有趣的东西玩。

我上论坛是找能玩的,其他的和我无关 --------------------编程问答-------------------- --------------------编程问答-------------------- 大家可以去看看ouravr(电子设计)的开发氛围,学习氛围,交流氛围,绝对让csdn汗颜。。

每隔一段时间就会推出一个DIY项目,大家群策群力,共同完善。。

http://www.amobbs.com/


搞硬件这种成本高周期长的尚且如此,怎么玩软件的论坛没玩个什么名堂出来?


--------------------编程问答-------------------- 这世界到底怎么了? --------------------编程问答-------------------- 楼主多发些这种帖把那些无聊的帖纸搞沉掉 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 顶野比兄,厉害,觉得论坛多一些野比兄这样的牛人,论坛也能更有活力啊。额...java骂C#,Android的喷IOS,微软的说苹果的不好....这些对喷都看麻木了,非要这样喷来喷去吗。自己用什么觉得爽,自己回家捂被子偷着乐啊,非要对喷整出点优越感么...以后多多关注野比兄啊 --------------------编程问答--------------------
引用 63 楼  的回复:
顶野比兄,厉害,觉得论坛多一些野比兄这样的牛人,论坛也能更有活力啊。额...java骂C#,Android的喷IOS,微软的说苹果的不好....这些对喷都看麻木了,非要这样喷来喷去吗。自己用什么觉得爽,自己回家捂被子偷着乐啊,非要对喷整出点优越感么...以后多多关注野比兄啊


我很苦恼啊。。我搞的东西在行家眼力绝对是不入流的。编程技术落后,数学又不好,没人带我,我自己玩又只有这点本事,不好玩。

今晚烤鱼啤酒,没醉的话回来画三测单玩 --------------------编程问答-------------------- --------------------编程问答-------------------- 这就是简单的曲线,和贝塞尔一毛钱关系都没有。 --------------------编程问答-------------------- 野比超级强悍。

赞! --------------------编程问答-------------------- 好厉害,学习了 --------------------编程问答-------------------- 我发现这个网站的高手真多。 --------------------编程问答-------------------- --------------------编程问答-------------------- 野比用例子说说接口与继承呗,搞不懂这些,小白们编程水平上不去呀 --------------------编程问答--------------------
引用 66 楼  的回复:
这就是简单的曲线,和贝塞尔一毛钱关系都没有。


没错!其实我写的很清楚了,DrawCurve(),不是DrawBezier() --------------------编程问答--------------------
引用 71 楼  的回复:
野比用例子说说接口与继承呗,搞不懂这些,小白们编程水平上不去呀


说不出来。。我只知其然,所以然和我不太熟。。你可以请教几位版主,他们比较清楚。。 --------------------编程问答-------------------- 支持下,不过这个用在哪些方面呢? --------------------编程问答-------------------- 第一遍的时候发现一个小bug哦,后来再想看又没看到了。。。 --------------------编程问答--------------------
引用 75 楼  的回复:
第一遍的时候发现一个小bug哦,后来再想看又没看到了。。。


bug多,不崩溃不报错,逻辑问题懒得改 --------------------编程问答-------------------- 这个不错,可以支持一下 --------------------编程问答-------------------- 野比我在阿莫报道了…… --------------------编程问答--------------------
引用 8 楼  的回复:
论坛多一些野比小王子

少一些二13的XXX之王

将是一件不错的事情。

 
厉害 --------------------编程问答--------------------
引用 78 楼  的回复:
野比我在阿莫报道了……


阿莫的密码我忘了! --------------------编程问答-------------------- 表示持续关注和学习野比. --------------------编程问答-------------------- 为了避免误导大家,我公布下逻辑上的bug

1.移动和点选没有判断左右键,所以左右键都可移动
2.点击检测的矩阵区域和手柄区一样,使得点到方框上等于点到方框外
3.状态更新不及时

欢迎找bug,改bug,然后贴到这里来。 --------------------编程问答-------------------- 为了避免误导大家,我公布下逻辑上的bug

1.移动和点选没有判断左右键,所以左右键都可移动
2.点击检测的矩阵区域和手柄区一样,使得点到方框上等于点到方框外
3.状态更新不及时

--------------------编程问答-------------------- 好象你有点无聊,作出来的东西也有点无聊,想想你在晒才华,好好展示别作那些! --------------------编程问答--------------------
引用 84 楼  的回复:
好象你有点无聊,作出来的东西也有点无聊,想想你在晒才华,好好展示别作那些!


有什么可做的东西是有聊的?求指导。

正缺呢。。  --------------------编程问答-------------------- 这个功能真的很强的....... --------------------编程问答-------------------- --------------------编程问答-------------------- 不如搞个开源项目吧,就从绘图开始,干掉PS,GIMP什么的,我觉得那些软件也没什么高深的,只要下功夫,一样做得出来 --------------------编程问答--------------------
引用 88 楼  的回复:
不如搞个开源项目吧,就从绘图开始,干掉PS,GIMP什么的,我觉得那些软件也没什么高深的,只要下功夫,一样做得出来


怎么好像是我昨晚说的似地?

我昨晚说:只要把一只猴子拴在键盘边上足够长时间,它也能写出PS来。你年写不出,你在过一年来看,然后在过一年......再过一年......再过100年.......你来看 --------------------编程问答-------------------- 然后我就做结论说:因为没有时间观念,所以你自己不知不觉爱说大话啊! --------------------编程问答--------------------
引用 88 楼  的回复:
不如搞个开源项目吧,就从绘图开始,干掉PS,GIMP什么的,我觉得那些软件也没什么高深的,只要下功夫,一样做得出来


你的目标太远大,我消受不起。。 
--------------------编程问答-------------------- 很好,很强大! --------------------编程问答-------------------- 这东东干嘛用啊,看得好无聊,小白求解释 --------------------编程问答-------------------- 如此……这般……

(截取自Photoshop CS 6)

--------------------编程问答-------------------- 可以啊,整天小酒喝着,小日子过的韵啊 --------------------编程问答-------------------- 有点意思!!! --------------------编程问答-------------------- 支持野比,持续关注中。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 野比还是那么牛
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,