duilib 修复 容器控件 rightbordersize和bottombordersize属性显示错误的bug
2015-05-07 14:50
591 查看
转载请说明出处,谢谢~~:/article/1529283.html
DuiLib的容器控件可以用bordersize统一指定边框宽度,也可以用rightbordersize、bottombordersize等属性单独指定某一个边框的宽度。但是rightbordersize、bottombordersize属性显示时存在问题,当给他们设置边框为1的时候是无法显示的,只有设置为2时才会显示。
跟踪源码后发现是在CContainerUI的DoPaint函数里,存在问题:
代码里的rcTemp是CContainerUI绘制的范围,边框最终会由CControlUI::DoPaint这句代码来绘制,在这之前调用了剪裁区域的函数给DC设置了剪裁区域,而GenerateClip的内部调用了CreateRectRgnIndirect函数,CreateRectRgnIndirect函数设置剪裁区域时会忽略掉右侧和底部的一像素,所以导致了这个问题。
修复代码很简单,提前给rcTemp的右侧和底部增加一像素:
总结:
bug的修复代码已经提交到我自己的Duilib库。
我的Duilib库代码下载地址:点击打开链接
Redrain 2015.5.7
DuiLib的容器控件可以用bordersize统一指定边框宽度,也可以用rightbordersize、bottombordersize等属性单独指定某一个边框的宽度。但是rightbordersize、bottombordersize属性显示时存在问题,当给他们设置边框为1的时候是无法显示的,只有设置为2时才会显示。
跟踪源码后发现是在CContainerUI的DoPaint函数里,存在问题:
void CContainerUI::DoPaint(HDC hDC, const RECT& rcPaint) { RECT rcTemp = { 0 }; if( !::IntersectRect(&rcTemp, &rcPaint, &m_rcItem) ) return; CRenderClip clip; CRenderClip::GenerateClip(hDC, rcTemp, clip); CControlUI::DoPaint(hDC, rcPaint); //省略其余代码 }
代码里的rcTemp是CContainerUI绘制的范围,边框最终会由CControlUI::DoPaint这句代码来绘制,在这之前调用了剪裁区域的函数给DC设置了剪裁区域,而GenerateClip的内部调用了CreateRectRgnIndirect函数,CreateRectRgnIndirect函数设置剪裁区域时会忽略掉右侧和底部的一像素,所以导致了这个问题。
修复代码很简单,提前给rcTemp的右侧和底部增加一像素:
void CContainerUI::DoPaint(HDC hDC, const RECT& rcPaint) { RECT rcTemp = { 0 }; if( !::IntersectRect(&rcTemp, &rcPaint, &m_rcItem) ) return; ++rcTemp.right; ++rcTemp.bottom; CRenderClip clip; CRenderClip::GenerateClip(hDC, rcTemp, clip); CControlUI::DoPaint(hDC, rcPaint); //省略其余代码 }
总结:
bug的修复代码已经提交到我自己的Duilib库。
我的Duilib库代码下载地址:点击打开链接
Redrain 2015.5.7
相关文章推荐
- duilib relativepos属性导致控件错误的bug修复
- duilib relativepos属性导致控件错误的bug修复
- duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
- duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
- duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
- duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复
- 【duilib界面库】duilib界面库(干货) 修复UIScrollBar鼠标移出控件外显示异常的BUG
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- asp.net 包含动态创建控件的容器如果要切换显示/隐藏不要用 Visible 属性
- 修复duilib库UISlider控件的4个bug
- span border-top,border-bottom属性在IE不显示解决方法,兼容IE ,Chrome,Firefox
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景