晕 这好象不行啊 呵呵 要么你截图后用一个picturebox叠加在上面 然后把透明调到0 在button_click事件执行的时候让图片显示出来

解决方案 »

  1.   

    运行态的控件当然不行了,可以生成一个设计态的按钮.看看SharpDevelop源码吧
      

  2.   

    多谢各位指点!我想要这种效果,是因为我们小组正在设计一个基于.net framwork 的可视化集成开发环境,若能做出那种效果,那么就太好了,可惜没有人能回答!
      

  3.   

    ajieboy(洁),我看了一点 SharpDevelop 的源码,看不懂,找不到我想 要的东西。没有办法了,我打算自己来画一个这个玩意,嘿嘿!!
      

  4.   

    有难度么?
    在button_clicked或mouse_over等事件中,可以在button的周围用GDI+画你想要的东西了,你想画什么就画什么。
      

  5.   

    现成的接口不是没有,但要跟EnvDTE那些家伙打交道,就是说获取DesignerService那些,比用GDI+实现麻烦得多。
      

  6.   

    在我们小组设计的集成开发环境中,放在 Form 窗体中的 button 等控件要实现拖动功能,为了在拖动控件的基础上实现那种效果,我用 GDI+ 在 button 控件周围画出8个小的白框,但是在 button 控件被拖动时,要使button 控件周围的白框能和 button 控件 同步移动非常困难,哎。
      

  7.   

    我想,若对一个特定的 button 而言,实现起来可能不困难,但是要对Form 窗体中的所有控件实现这种功能好像很麻烦啊
      

  8.   

    可以!!!!!偶以胶看过一个这样的源码,
    不但会出现八个 小白框,而且还像设计时一样,可以移动,可以移动改变控件的大小,
    而且不限于 Button
    呵呵,可惜,偶不记得在哪里看到的,偶还测试过
      

  9.   

    timiil(小华) ,你说有别的方法可以实现,你可否说的更详细点了,谢谢!!
      

  10.   

    leo2003(C#学习ing) ,你以后如果看到那个源码的话,请联系小弟,不胜感激[email protected]
      

  11.   

    制作一个控件,重写onpaint方法,里面用状态判断
    bool isDesign;
    protected override void OnPaint(PaintEventArgs e){
      if(isDesign){
      //画设计状态
      }
      else{
      //画普通状态
      }
    }isDesign改变的时候Invalidate()控件
      

  12.   

    更详细的就是你拿着“EnvDTE" 在google搜索吧,奇怪你们要做设计器,应该一早就要用到这些对象的了。
      

  13.   

    这种效果要自己做了,在四周画上才行,以前在vb和c++builder里做过
      

  14.   

    以前我作出来的就是这种效果。根据SharpDevelop来做的,控件不是平常new出来的控件的,是利用.net底层接口,用定义的host生成出来的,放在窗体上就有四周的方框。当时我看了一个来月的SharpDevelop源码才做出来,好好看看吧。
      

  15.   

    呵呵,楼主和我做的差不多啊,不知道是做什么用的,有空交流一下在.Net中我知道的实现有两种方式:
    1.利用Framework的自带的结构,有个例子,链接找不到了,用FormDesigner查应该可以查到
      SharpDevelop用的也是这个,不过比较复杂,不易看懂
    2.自己动手实现,虽然有点麻烦,不过还是不难的,这个也有程序可以参考,有本书叫<基于组件的开发>
      第10章就是移动的例子,不过书有点贵我用的是第2种方式,他的好处是不依赖Framework,很方便支持图形组件的移动等
      

  16.   

    Jim3(Jim) ,多谢你的指点!我们是想做一个模拟 vs.net 的集成开发环境
      

  17.   

    我做的是类似绘图软件的,用于建筑,工控等行业如果模拟vs.net,参考sharpdevelop吧
      

  18.   

    sharpdevelop 的源码太多了,我看得头都很疼了,哈哈!
      

  19.   

    唉,我当初也是看的头晕,不过公司原因没有做下去,怀念那段日子呀,真想坚持做下去。http://www.52dotnet.com/form.jpghost   = new DefaultDesignerHost();
    ComponentChangeService changeService = new ComponentChangeService();
    host.AddService(typeof(System.ComponentModel.Design.IComponentChangeService),      changeService);
    host.AddService(typeof(System.ComponentModel.Design.IDesignerOptionService),       new ICSharpCode.SharpDevelop.FormDesigner.Services.DesignerOptionService());
    host.AddService(typeof(System.ComponentModel.Design.ITypeDescriptorFilterService), new TypeDescriptorFilterService());

    host.AddService(typeof(System.Drawing.Design.IPropertyValueUIService), new PropertyValueUIService());

    ExtenderService extenderService = new ExtenderService();
    host.AddService(typeof(System.ComponentModel.Design.IExtenderListService),    extenderService);
    host.AddService(typeof(System.ComponentModel.Design.IExtenderProviderService),extenderService);

    host.AddService(typeof(System.ComponentModel.Design.IDesignerHost),        host);
    host.AddService(typeof(System.ComponentModel.IContainer),                  host.Container);
    host.AddService(typeof(System.ComponentModel.Design.IDictionaryService),   new DictionaryService());
    host.AddService(typeof(System.ComponentModel.Design.IEventBindingService), new EventBindingService(host));
    host.AddService(typeof(System.ComponentModel.Design.ISelectionService),    new SelectionService(host));

    host.AddService(typeof(System.ComponentModel.Design.Serialization.INameCreationService),  new NameCreationService(host));
    host.AddService(typeof(System.ComponentModel.Design.IDesignerEventService), new DesignerEventService()); host.AddService(typeof(System.ComponentModel.Design.IReferenceService), new ReferenceService(host));
    host.AddService(typeof(System.ComponentModel.Design.Serialization.IDesignerSerializationService), new FormDesign.DesignerSerializationService(host));


    // Add toolbox service
    host.AddService(typeof(IToolboxService), listView1); PopulateToolbox(listView1); host.Activate();

    // host.TransactionClosed += new DesignerTransactionCloseEventHandler(TransactionFinished);

    if (designPanel == null) 
    {
    designPanel = new DesignPanel(host);

    else 
    {
    designPanel.Host = host;
    }

    // host.AddService(typeof(System.ComponentModel.Design.IMenuCommandService),  new MenuCommandService(host, designPanel));

    host.AddService(typeof(DesignPanel), designPanel); host.AddService(typeof(System.ComponentModel.Design.IMenuCommandService),  new CMConfig.MenuCommandService(host, designPanel));
    designPanel.Location = new Point(0, 0);
    designPanel.Dock     = DockStyle.Fill; // this.panel1.Controls.Add(designPanel); listView1.designPanel = designPanel;
      

  20.   

    ajieboy(洁),你在上面粘贴的是什么代码阿??
      

  21.   

    谢谢各位的帮助,小弟的问题基本已经解决!尤其要谢谢  Jim3(Jim) !