最近老是在什么拖放、缩放、移动上面作文章,其实还真说不上有什么技术含量, 但又不想半途而废,最终其实我是想做一个类似于grove提供的那种可视化的SQL生成器的操作环境,代替自己之前在公司做的一个组件的操作方式,象这个样子:
数据表添加到窗口之后可以移动位置和缩放大小。因为不是工作任务,完全是信马由缰在零零碎碎地做着玩。那之前已经把运行时移动组件的问题解决了,现在考虑组件缩放的问题。其实《在运行时通过鼠标拖动移动控件位置及改变控件的大小 》这个转贴中是有了一种解决方法的,但反正是随意地做,就想着换换方法,就当作学习C#。我是从c++Builder转到VS 开发环境来的,如果不是公司的要求,我还真愿意继续使用c++Builder。c++Builder是一个完全可视化的开发环境,任何组件都可以采用所见即所得的方式来布置在窗体内的位置,我非常习惯于将鼠标点到某个控件上,这个控件的边角上就会显示几个操作用的句柄,把鼠标移动到句柄上就会根据句柄所在的不同的位置显示不同的鼠标光标,就象这个样子:,实际上要对控件进行缩放,是用鼠标操作这几个句柄实现的。干脆自己也这么做做看好了。其实上面这个Button的贴图是测试程序运行的效果。程序一点也不复杂,先把基本的代码贴上来,控制缩放的代码做完之后再贴。
public
partial
class
ControlResizeHandle : UserControl
... {
私有成员#region 私有成员
private const int WIDTHANDHEIGHT = 5;
private Control _ctrl = null;
private ControlResizeHandlePosition _handlePostion;
#endregion
公共属性#region 公共属性
public ControlResizeHandlePosition HandlePostion
...{
get ...
... {
私有成员#region 私有成员
private const int WIDTHANDHEIGHT = 5;
private Control _ctrl = null;
private ControlResizeHandlePosition _handlePostion;
#endregion
公共属性#region 公共属性
public ControlResizeHandlePosition HandlePostion
...{
get ...