做一个自定义界面的窗体,标题栏用图片来绘制。但是有的系统里标题栏的高度太小,画上图片后太难看。并且也放不下自定义的关闭按钮。怎么做可以设置它的高度?

解决方案 »

  1.   

    form类型设为None,相应的事件,自己添加。
      

  2.   

    如果把边框设置为NONE,标题栏是画上了,但是如果窗体里有菜单的话就不行了。所以这个办法 不行。
    我现在的做法是得到窗体的Graphics,而不是客户区的,这样就可以在标题栏上面画图,从而把它覆盖,因为有标题栏,所以菜单的显示还算正常。
    但是如果图片的高度大于标题栏时,菜单的显示还是会有问题。
    所以目前只有一个办法就是设置标题栏的高度等于图片的高度。
      

  3.   

    form类型设为None,在上面加一个dock为top的panel作为标题栏试试
    改变panel的大小
      

  4.   

    可以讲讲你是怎么获得窗体的Graphics的吗?OnPaint里面只是Client的
      

  5.   

    To  isaacyh(发现自己啥都不懂回头学C++) :但是要放菜单的话,就不行啦。
    To  coolksj(coolksj):调API
            [DllImport("User32.dll", CharSet=CharSet.Auto)]
            public static extern IntPtr GetWindowDC(IntPtr hWnd);                IntPtr hDC = GetWindowDC(this.Handle);
                    Graphics gra = Graphics.FromHdc(hDC);                gra.DrawImageUnscaled(bmp,0,0);
                    gra.Dispose();
      

  6.   

    不要使用MainMenu,用浮动菜单ContextMenu,窗体设为None,应该就没问题了阿
      

  7.   

    窗体设为none,按钮+ContextMenu可以实现菜单,然后你就想怎么画都行了
      

  8.   

    TO Jim3(Jim) :现在就是用缩放来实现的。但是缩放后的界面效果和预想的不太一样,所以就想找点别的办法
      

  9.   

    看到一个API函数SystemParametersInfo可以改变标题栏高度
    用SPI_SETNONCLIENTMETRICS参数不过改变的好像是整个系统的,你试一下吧
      

  10.   

    有一个初步的解决方案了,就是截获WM_NCCALCSIZE消息,指定客户区的大小。
      

  11.   

    看到一个API函数SystemParametersInfo可以改变标题栏高度
    用SPI_SETNONCLIENTMETRICS参数不过改变的好像是整个系统的,你试一下吧
      

  12.   

    谢谢大家了,现在想通过截获WM_NCCALCSIZE消息来自定义客户区的大小从而实现目的。只是在写的时候又遇到些问题http://community.csdn.net/Expert/topic/3840/3840346.xml?temp=.8963282请大家继续帮忙啊!
      

  13.   

    iyond(伊飏) 
          帮你做了一下试验,截取WM_NCCALCSIZE,修改NCCALCSIZE_PARAMS,并没有用.
          他的确可以让Client改变,但无法改变Title
      

  14.   

    To coolksj(coolksj) :
    谢谢了。但是虽然它不能改变TITLE,但是只要能改变客户区就可以了。因为我可以把客户区往下挪,这样就等于改变了标题栏的高度(因为标题栏是我自己画的)。另外,你用VB是怎么写的?
      

  15.   

    我是用form类型设为None,在上面加一个dock为top的panel作为标题栏的办法实现的外观还不错,可是怎么实现窗体的拖拽呢?望高手点解~~  谢谢了~
      

  16.   

    因为还是改变不了标题栏,所以放弃了。现在我基本上完成了一个可以动态设置皮肤的自定义窗体
    http://my.hevnet.cn/iyond/posts/7354.aspx
    因为是第一个版本,所以错误和不足肯定不少,请大家指正。
      

  17.   

    增加:双击标题栏改变窗体状态
          恢复默认皮肤功能Demo下载地址:http://bbs.hevnet.cn/UploadFile/2005-3/200531122253976.rar