2010-08-03 104 views
3

所以在的WinForms,每一个下拉组合框有这个小箭头,啄来,告诉它的用户一个下拉的权利,有点像这样:宽度下拉的箭头

http://www.ci.berkeley.ca.us/ig_common/images/igsch_dropdown_up_o2003silver.gif http://www.ci.berkeley.ca.us/ig_common/images/igsch_dropdown_up_o2003silver.gif

现在我该如何找出像素有多宽?原因是,我正在使用ControlDrawToBitmap,它不会为组合框正确绘制文本,并且我可以重新绘制内容,我只是敲掉一些箭头(正确绘制)。

+0

此箭头在Aero风格中完全不同。我无法解读你的理由。 – 2010-08-03 20:15:53

回答

5

想到的第一个想法:检查是否组合框按钮宽度的轨道与滚动条的宽度。滚动条宽度可以在用户偏好中修改。使用GetSystemMetrics()API来获取各种滚动条的宽度。如果您更改系统滚动条宽度并且不影响正常组合框的大小,请忽略此设置。

第二个想法:使用编辑控件的格式化矩形找出编辑控件认为是可用的显示区域(减去组合框)。见EM_GETRECT in MSDN

但是,它听起来像这只是一个黑客的解决方法,你真正的问题:如果你可以让控件正确绘制到位图,那么你不会需要这个hackery。

0

我计算出它是9个像素宽在Photoshop