2016-01-23 52 views
1

System.Drawing.ContentAlignment枚舉看起來是這樣的:解釋上的ContentAlignment枚舉值

namespace System.Drawing 
{ 
    // Summary: 
    //  Specifies alignment of content on the drawing surface. 
    [Editor("System.Drawing.Design.ContentAlignmentEditor, System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] 
    public enum ContentAlignment 
    { 
     TopLeft = 1, 
     TopCenter = 2, 
     TopRight = 4, 
     MiddleLeft = 16, 
     MiddleCenter = 32, 
     MiddleRight = 64, 
     BottomLeft = 256, 
     BottomCenter = 512, 
     BottomRight = 1024, 
    } 
} 

爲什麼值實物標誌式的定義?爲什麼8和128失蹤?

回答

4

也許使ContentAlignment枚舉參加位運算。

但爲什麼它沒有用FlagsAttribute裝飾?

因爲它並不是用作客戶端的按位標誌,所以它們沒有用FlagsAttribute裝飾枚舉。

你可以參照.NET框架源代碼,看看他們是如何很好地利用ContentAlignment爲位操作。

ControlPaint.TranslateAlignment利用它,你可以看到與按位的聲明或top of the class

private static readonly ContentAlignment anyRight = ContentAlignment.TopRight | ContentAlignment.MiddleRight | ContentAlignment.BottomRight; 
private static readonly ContentAlignment anyBottom = ContentAlignment.BottomLeft | ContentAlignment.BottomCenter | ContentAlignment.BottomRight; 
private static readonly ContentAlignment anyCenter = ContentAlignment.TopCenter | ContentAlignment.MiddleCenter | ContentAlignment.BottomCenter; 
private static readonly ContentAlignment anyMiddle = ContentAlignment.MiddleLeft | ContentAlignment.MiddleCenter | ContentAlignment.MiddleRight; 

這應該回答「爲什麼值樣的旗式定義」。

爲什麼8和128失蹤?

我有沒有想法。如果有人,評論將不勝感激。

2

昨天我看到從試圖解釋爲什麼8和128缺少匿名用戶建議編輯。它被拒絕了,因爲它被編輯到現有的答案中。

我覺得這只是猜測,並沒有一個明確的答案,但它聽起來似是而非,所以這(從斯利拉姆Sakthivel的回答引用):

爲什麼8和128失蹤?

我有沒有想法。如果有人,評論將不勝感激。

讓我們以位,然後:

原因沒有8,128,或1024以上的任何如下: 對於第3(左上,TopCenter和TopRight)取前4位:

TopLeft = 1 (0001) 
TopCenter = 2 (0010) 
TopRight = 4 (0100) 

然後第二3(MiddleLeft,MiddleCenter和MiddleRight)

MiddleLeft = 16 (0001[0000]) 
MiddleCenter = 32 (0010[0000]) 
MiddleRight = 64 (0100[0000]) 

然後最後3(BOTTOMLEFT,BottomCenter和BottomRight)

BottomLeft = 256 (0001[00000000]) 
BottomCenter = 512 (0010[00000000]) 
BottomRight = 1024 (0100[00000000]) 

這使得它易於使用的位操作不僅垂直,而且水平。

+0

如果您的材料基於其他答案,評論或建議的編輯,請不要擔心。只要你聲明,並在你的回答中提供新的東西,你就非常歡迎爲新的答案作出貢獻。所有材料都是Creative Commons許可的,因此它屬於每個人。 – halfer