求解:C#中 线条控件是怎么实现拉长和缩短的?
答案:2 悬赏:40 手机版
解决时间 2021-02-04 11:27
- 提问者网友:兔牙战士
- 2021-02-04 04:02
求解:C#中 线条控件是怎么实现拉长和缩短的?
最佳答案
- 五星知识达人网友:不如潦草
- 2021-02-04 04:23
要自定义一个控件的话,要学习如何画图,需要了解Graphics, Pen , Brush 等类型追问我已经把线条画出来了,但是想拖动和拉伸要自定义事件,可否讲解一下有哪些事件,这些事件都用来实现什么功能的(这部分详细点!)谢谢!追答要实现拖动的话,首先要记录你在哪里画了线条,然后当鼠标点击的时候判断鼠标是否点中了该线条,要实现你所说的控件,无非是在控件的各个鼠标动作事件中写一些代码。
以画线段为例,当鼠标按下时记录端点A,在用户托动鼠标时临时记录端点B,并从端点A到端点B画线,最后当用户放开鼠标时,再把端点B记录下来,这样就画出一条线段。你要移动的画,就要重新拾取该线段,当用户按下鼠标时要判断当前鼠标按下的点是否点在线段上。
具体你看以参考一下Excels的画图动作,你可以模仿一下。追问如果在移动的过程中,线条发生跳动是怎么回事?追答线条发生跳动?
你是想说闪屏吧。
如果是闪屏,在很多网上会回答你用双缓存来解决,其实你可以先在内存把图像画好然后再一次性画到屏幕。
另外,你画线条的时候,可以先把原来线短的数据复制出来,鼠标按下移动时,原来的线条A线不动(在原来的位置画图),在鼠标的当前位置同时用虚线画刚复制出来的副本,以提示用户当前位置与原来位置的距离,当用户释放鼠标时再把副本的数据赋给原线条,之后就只画原线条,而释放副本。
你说的另一种跳动,可能是你计算位移时,算法有误,
你应在按下鼠标时先记录第一点的位置,而之后鼠标移动的每一点要与第一点比较计算出位移(而不是后一点与前一点比较),再把位移值与原来的点值相加,得出新的位置。
以画线段为例,当鼠标按下时记录端点A,在用户托动鼠标时临时记录端点B,并从端点A到端点B画线,最后当用户放开鼠标时,再把端点B记录下来,这样就画出一条线段。你要移动的画,就要重新拾取该线段,当用户按下鼠标时要判断当前鼠标按下的点是否点在线段上。
具体你看以参考一下Excels的画图动作,你可以模仿一下。追问如果在移动的过程中,线条发生跳动是怎么回事?追答线条发生跳动?
你是想说闪屏吧。
如果是闪屏,在很多网上会回答你用双缓存来解决,其实你可以先在内存把图像画好然后再一次性画到屏幕。
另外,你画线条的时候,可以先把原来线短的数据复制出来,鼠标按下移动时,原来的线条A线不动(在原来的位置画图),在鼠标的当前位置同时用虚线画刚复制出来的副本,以提示用户当前位置与原来位置的距离,当用户释放鼠标时再把副本的数据赋给原线条,之后就只画原线条,而释放副本。
你说的另一种跳动,可能是你计算位移时,算法有误,
你应在按下鼠标时先记录第一点的位置,而之后鼠标移动的每一点要与第一点比较计算出位移(而不是后一点与前一点比较),再把位移值与原来的点值相加,得出新的位置。
全部回答
- 1楼网友:由着我着迷
- 2021-02-04 04:36
线条控件?有这个东东,没用过,求科普追问打算做一个自定义控件的,但不会...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯