2014-01-23 43 views
2

如何解析顏色對話框中的結果,以便將畫筆的顏色設置爲其值?將顏色對話框結果解析爲畫筆

這就是我擁有的和我想要做的。

let b = Brushes.Black 
btnColor.Click.Add(fun _ -> 
ColorDialog.ShowDialog() (* Here I want to set the selected color to my brush b *) |> ignore) 
+0

這是Wpf還是Winforms。你還使用哪種ColorDialog? –

+0

對不起,應該提到它的窗體 – Jacco

回答

4

我會猜測你在說的是System.Windows.Forms這裏。

open System.Drawing 
open System.Windows.Forms 

let getColorFromUser initialColor = 
    use dlg = new ColorDialog(Color = initialColor) 
    if dlg.ShowDialog() = DialogResult.OK then 
     dlg.Color 
    else 
     initialColor 

// example with mutation 
let mutable b = new SolidBrush(Color.Black) 

b <- new SolidBrush(getColorFromUser(Color.Black)) 

查看Values docs瞭解更多關於可變的信息。

+0

似乎工作,但是當我這樣做時,我沒有注意到刷子b的任何改變,任何想法爲什麼? :/ btnColor2.Click.Add(fun _ - > b = new SolidBrush(getColorFromUser(b.Color))|> ignore) – Jacco

+0

默認情況下,FSharp大多是不可變的,因此您不能更改'b'的值。如果你想更新'b',那麼你應該將它標記爲'mutable'。我將添加到代碼示例中。 –

+0

我一直忘記那......再次感謝!問題解決了。 – Jacco