2013-05-20 24 views
1

好被繪製的區域,我有一個按鈕,它顯示本身在其通過一些設置determained不同的尺寸。的WinForms:一個按鈕,其中的圖像可以在

我現在要在按鈕上顯示的圖像。我如何獲得我可以繪製的矩形?

如果我查詢button.DisplayRectanglebutton.ClientRectangle,我得到的按鈕的確切大小返回。但是,當按鈕有一個邊框等等,我無法借鑑,這是錯誤的。

據我所知,DisplayRectangle應該只返回我可以繪製的矩形,排除像邊框和邊距之類的東西?

有沒有辦法讓我想要什麼?

更新:

從道格拉斯Barbin的回答使我看他SystemInformation類實際上有Border3DSize財產。

但儘管如此,如果我在我的顯示器上計算

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

仍然有一些(二要準確)缺少真正完全貼合圖像像素。

回答

1

這隻有在按鈕的FlatAppearance設置爲平坦時纔有效。

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調用可能是可能的,但代碼會非常難看。

+0

這是一個不錯的主意。不幸的是我需要這個3D邊框外觀。 –

相關問題