标题:怎样做个拖拽某控件到某区域的程序?
只看楼主
jokywal
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-17
结帖率:0
已结贴  问题点数:20 回复次数:3 
怎样做个拖拽某控件到某区域的程序?
老板有个画电路图的程序,俺想做成vs2008的样式,就是点一下Button,然后就能在空白区域内生成一个Button对象。同样,如果点一下线段按钮,就能在空白区域出来一个线段,能调整长短什么的。现在是一点思路也没有啊。
搜索更多相关主题的帖子: 控件 区域 
2009-11-18 09:00
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
得分:10 
线段可以用宽度为1的panel来模拟

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-11-18 22:43
jokywal
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-17
得分:0 
楼上老大,能不能说详细一点啊,就是和windows自带的那种画图板差不多的东西,能画直线,画矩形什么的
2009-11-19 09:23
yangglemu
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:521
注 册:2006-9-15
得分:10 
一个类:
class MyRectangle//以矩形零件为例(电阻)
{
 point lefttop; //左上角
 int width,height;//宽度
 Color lineColor;//线条颜色

 public MyRectangle()//构造函数
{
 lefttop=new Point(10,10);
 width=80;
 height=30;
 lineColor=Color.Red;
 DrawingSelf();
}

void DrawingSelf()
{
 //根据参数绘图
 }

public Point LeftTop
{
 Set{this.lefttop=value;
 DrawingSelf();//只要参数变动就重绘
 }
}
其它属性同上(Width,Height,LineColor)

在工具栏上拖一个按钮,在其单击事件中new一个上面的实例就可以了,当然也需要同步保存进你的零件容器

如果想要动态根据鼠标操作改变此电阻位置和大小,给其再加上响应鼠标的事件,给个思路你:
电阻实际上是画在一个控件上面,比如Panel我们叫P1,鼠标在电阻上操作时,实际上能响应鼠标事件的是P1
如何将P1的鼠标事件和电阻联系起来?
电阻有个属性LeftTop对应于P1的Point(0,0)的偏移位置,知道这个对应关系就好办了,将所有的零件保存在一个容器里,鼠标有操作时,遍历此容器中的零件,看哪个零件的LeftTop和Width及Height属性,找到鼠标操作能够影响的零件,这样就将鼠标和具体的零件联系起来了,进一步的动态改变零件大小位置颜色就容易了
如果多个零件被鼠标影响怎么办?
可以设计一个当前零件(操作只能当前零件有效),专门拿个变量来保存当前零件
(被鼠标单击的零件是当前零件,按了工具栏上的绘制按纽,以默认参数生成的零件也是当前零件)

顺便说一下,象这样需要画很多个电阻(只是具体参数不同,结构完全一样)程序如果用某个设计模式来设计,会是很适合的


试着挣个威望!
2009-11-19 12:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-292689-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026654 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved