关闭

c#实现组件的运行时缩放(一)

标签: c#c++buildernullbuttonobjectclass
1146人阅读 评论(0) 收藏 举报

最近老是在什么拖放、缩放、移动上面作文章,其实还真说不上有什么技术含量, 但又不想半途而废,最终其实我是想做一个类似于grove提供的那种可视化的SQL生成器的操作环境,代替自己之前在公司做的一个组件的操作方式,象这个样子:

grove

数据表添加到窗口之后可以移动位置和缩放大小。因为不是工作任务,完全是信马由缰在零零碎碎地做着玩。那之前已经把运行时移动组件的问题解决了,现在考虑组件缩放的问题。其实《在运行时通过鼠标拖动移动控件位置及改变控件的大小 》这个转贴中是有了一种解决方法的,但反正是随意地做,就想着换换方法,就当作学习C#。我是从c++Builder转到VS 开发环境来的,如果不是公司的要求,我还真愿意继续使用c++Builder。c++Builder是一个完全可视化的开发环境,任何组件都可以采用所见即所得的方式来布置在窗体内的位置,我非常习惯于将鼠标点到某个控件上,这个控件的边角上就会显示几个操作用的句柄,把鼠标移动到句柄上就会根据句柄所在的不同的位置显示不同的鼠标光标,就象这个样子:,实际上要对控件进行缩放,是用鼠标操作这几个句柄实现的。干脆自己也这么做做看好了。其实上面这个Button的贴图是测试程序运行的效果。程序一点也不复杂,先把基本的代码贴上来,控制缩放的代码做完之后再贴。

  public partial class ControlResizeHandle : UserControl
    
{
        
私有成员
        
公共属性
        
私有方法
        
构造函数
        
公共方法

    }

除了自定义的UserControl,还另外定义了一个枚举来设定当鼠标移动到组件上时显示的鼠标光标

public enum ControlResizeHandlePosition { Right,RightBottom};

,正是这个光标让我不能把Ctrl属性设为static,因为我在Ctrl属性被赋值之后调用了SetPosition方法将组件的位置定位在控件的周围,而SetPosition却使用了这个非静态的枚举变量,破坏了静态方法对变量的引用规定。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:141924次
    • 积分:1368
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:8篇
    • 译文:0篇
    • 评论:52条
    最新评论