1

好的,我有一个按钮,它以不同的大小显示,这取决于某些设置。

我现在想在按钮上显示图像。如何获得可以绘制的矩形?

如果我查询button.DisplayRectangleor button.ClientRectangle,我会得到返回按钮的确切大小。但是由于按钮有边框等,我无法绘制,这是错误的。

正如我从文档中了解到的那样,DisplayRectangle应该只返回我可以绘制的矩形,不包括边框和边距之类的东西?

有没有办法得到我想要的?

更新:

Douglas Barbin 的回答让我看到了SystemInformation实际上拥有该Border3DSize属性的班级。

但是,如果我计算

Dim size = New Size(ctrl.Width - SystemInformation.Border3DSize.Width * 2, _
    ctrl.Height - SystemInformation.Border3DSize.Height * 2)

在我的显示器上,仍然缺少一些(确切地说是两个)像素以完全适合图像。

4

1 回答 1

1

这仅在按钮的 FlatAppearance 设置为 flat 时才有效。

Dim mySize as Size = New Size With 
{.Height = button.Height - (button.FlatAppearance.BorderSize * 2), 
 .Width = button.Width - (button.FlatAppearance.BorderSize * 2) }

对于所有其他(非平面)边框样式,边框取决于操作系统和任何已安装的主题,所以我不确定是否有一种简单的方法可以从 Visual Studio 中获取它。这可能通过 Windows API 调用实现,但代码会非常难看。

于 2013-05-20T16:20:07.850 回答