DuiLib的容器控件可以用bordersize統一指定邊框寬度,也可以用rightbordersize、bottombordersize等屬性單獨指定某一個邊框的寬度。但是rightbordersize、bottombordersize屬性顯示時存在問題,當給他們設定邊框為1的時候是無法顯示的,隻有設定為2時才會顯示。
跟蹤源碼後發現是在CContainerUI的DoPaint函數裡,存在問題:
代碼裡的rcTemp是CContainerUI繪制的範圍,邊框最終會由CControlUI::DoPaint這句代碼來繪制,在這之前調用了剪裁區域的函數給DC設定了剪裁區域,而GenerateClip的内部調用了CreateRectRgnIndirect函數,CreateRectRgnIndirect函數設定剪裁區域時會忽略掉右側和底部的一像素,是以導緻了這個問題。
修複代碼很簡單,提前給rcTemp的右側和底部增加一像素:
總結:
bug的修複代碼已經送出到我自己的Duilib庫。
Redrain 2015.5.7