none
wpf 如何获取窗口边框的宽度 RRS feed

  • 问题

  • Window的WindowStyle是SingleBorderWindow,ResiezMode是CanResize.想获取窗口的边框宽度。使用SystemParameters获取ResizeFrameVerticalBorderWidth、BorderWidth都不是正确的值,因为我用了工具抓取窗口边框是8个像素的,但以上值都不相等。

    求解

    Ths

    2013年11月27日 0:51

答案

  • 您好!

    我查询了SystemParameters.ResizeFrameVerticalBorderWidth 属性相应的API文档,这个属性获取在窗口的外围指示的宽度值 (粗细,以像素为单位),垂直大小调整边框的大小进行调整。并且获得的值是Double型。所以您通过截图工具获取的宽度不一定准确。我在本机也相应的测试了下这个API返回的值与截图工具获取的像素值确实有差别。

    对于一个可以改变大小的窗体,我建议您这样来计算他的Size,请参考下面的代码:

    var titleHeight = SystemParameters.WindowCaptionHeight
    
      + SystemParameters.ResizeFrameHorizontalBorderHeight;
    
    var verticalBorderWidth = SystemParameters.ResizeFrameVerticalBorderWidth;
    

    需要说明的是这个Size和系统主题有很大的关系,例如在Windows XP下与Windows 7都是有差别的,WIN7的玻璃效果与经典效果应该也是有细微差别的。

    关于获取WPF中窗体边框宽度,可以参考:

    http://stackoverflow.com/questions/6032032/how-do-i-compute-the-non-client-window-size-in-wpf

    祝您生活愉快!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月28日 2:35
    版主

全部回复

  • 您好!

    我查询了SystemParameters.ResizeFrameVerticalBorderWidth 属性相应的API文档,这个属性获取在窗口的外围指示的宽度值 (粗细,以像素为单位),垂直大小调整边框的大小进行调整。并且获得的值是Double型。所以您通过截图工具获取的宽度不一定准确。我在本机也相应的测试了下这个API返回的值与截图工具获取的像素值确实有差别。

    对于一个可以改变大小的窗体,我建议您这样来计算他的Size,请参考下面的代码:

    var titleHeight = SystemParameters.WindowCaptionHeight
    
      + SystemParameters.ResizeFrameHorizontalBorderHeight;
    
    var verticalBorderWidth = SystemParameters.ResizeFrameVerticalBorderWidth;
    

    需要说明的是这个Size和系统主题有很大的关系,例如在Windows XP下与Windows 7都是有差别的,WIN7的玻璃效果与经典效果应该也是有细微差别的。

    关于获取WPF中窗体边框宽度,可以参考:

    http://stackoverflow.com/questions/6032032/how-do-i-compute-the-non-client-window-size-in-wpf

    祝您生活愉快!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月28日 2:35
    版主
  • Ok 谢谢
    2013年12月2日 8:34