是否有可能在winforms,vb.net中定義將出現在colordialog的自定義顏色框中的特定自定義顏色?定義將顯示在colordialog中的特定自定義顏色?
3
A
回答
4
總之,是的。 MSDN覆蓋它here。問題是,它不是通過Color
- 你需要處理的價值作爲BGR設置 - 即每個整數是由顏色組成00BBGGRR,所以你左移藍色16,綠色8,並使用紅色「原樣「。
我的VB很爛,但在C#中,添加紫色:
using (ColorDialog dlg = new ColorDialog())
{
Color purple = Color.Purple;
int i = (purple.B << 16) | (purple.G << 8) | purple.R;
dlg.CustomColors = new[] { i };
dlg.ShowDialog();
}
反射向我保證,這是類似於:
Using dlg As ColorDialog = New ColorDialog
Dim purple As Color = Color.Purple
Dim i As Integer = (((purple.B << &H10) Or (purple.G << 8)) Or purple.R)
dlg.CustomColors = New Integer() { i }
dlg.ShowDialog
End Using
2
現有的示例包含一個錯誤。
purple.B是一個字節不是一個整數,所以移動它的8位或16位將不會對該值做任何事情。在移位之前,每個字節必須首先被轉換爲整數。像這樣的東西(VB.NET):
Dim CurrentColor As Color = Color.Purple
Using dlg As ColorDialog = New ColorDialog
Dim colourBlue As Integer = CurrentColor.B
Dim colourGreen As Integer = CurrentColor.G
Dim colourRed As Integer = CurrentColor.R
Dim newCustomColour as Integer = colourBlue << 16 Or colourGreen << 8 Or colourRed
dlg.CustomColors = New Integer() { newCustomColour }
dlg.ShowDialog
End Using
4
如果你想有超過1個自定義顏色,你可以這樣做:
'Define custom colors
Dim cMyCustomColors(1) As Color
cMyCustomColors(0) = Color.FromArgb(0, 255, 255) 'aqua
cMyCustomColors(1) = Color.FromArgb(230, 104, 220) 'bright pink
'Convert colors to integers
Dim colorBlue As Integer
Dim colorGreen As Integer
Dim colorRed As Integer
Dim iMyCustomColor As Integer
Dim iMyCustomColors(cMyCustomColors.Length - 1) As Integer
For index = 0 To cMyCustomColors.Length - 1
'cast to integer
colorBlue = cMyCustomColors(index).B
colorGreen = cMyCustomColors(index).G
colorRed = cMyCustomColors(index).R
'shift the bits
iMyCustomColor = colorBlue << 16 Or colorGreen << 8 Or colorRed
iMyCustomColors(index) = iMyCustomColor
Next
ColorDialog1.CustomColors = iMyCustomColors
ColorDialog1.ShowDialog()
0
SIMPLFIED(基於愛說話)
如果你知道目標自定義顏色ARGB然後使用:
' Define custom colors
ColorDialog1.CustomColors = New Integer() {(255 << 16 Or 255 << 8 Or 0), _
(220 << 16 Or 104 << 8 Or 230), _
(255 << 16 Or 214 << 8 Or 177)}
ColorDialog1.ShowDialog()
'where colors are (arbg) 1: 0,255,255 [aqua]
' 2: 230,104,220 [bright pink]
' 3: 177,214,255 [whatever]
相關問題
- 1. 定義自定義顏色
- 2. 如何在SWT中預加載自定義顏色ColorDialog
- 3. UITableViewCell的自定義顏色
- 4. 自定義顏色條的顏色MATLAB
- 5. 如何定義用於ZSH提示的自定義顏色?
- 6. 在ant中自定義AnsiColorLogger的顏色?
- 7. ASPxColorEdit自定義顏色
- 8. CMFCTabCtrl顏色自定義
- 9. CKEDITOR - 自定義顏色
- 10. C#Trackbar自定義顏色
- 11. 自定義陰影顏色
- 12. UIAlertView自定義顏色
- 13. 自定義MKPinAnnotationView顏色
- 14. MonoTouch自定義UISwitch顏色
- 15. WinDBG自定義:顏色?
- 16. Angular Material自定義顏色
- 17. 自定義ListView ContextMenu顏色
- 18. Highcharts自定義顏色
- 19. 自定義TAdvSmoothListBox項顏色
- 20. android tabhost自定義顏色
- 21. 自定義幾何顏色
- 22. Plotly自定義顏色
- 23. 自定義Android ListView顏色?
- 24. jqgrid自定義行顏色
- 25. emacs自定義面顏色
- 26. 如何自定義Google圖表中特定點的顏色
- 27. 如何在VIM中定義自定義RGB背景顏色?
- 28. 在Visual Studio中定義自定義顏色?
- 29. 在python中定義顏色
- 30. 檢測用戶何時更改colordialog中的自定義顏色設置
+1爲按位操作。我真的希望MS能更好地記錄這些東西。 – 2010-10-04 14:40:25