これからはちょっと頑張ってPOSTしようと思います今日この頃。
最近は.NETによるクライアントAPの案件が多いのですが、
そこでユーザーごとにテーマカラーを保存して、表示する時に背景やら前景やら色変えたり変えなかったりしたらいいよねというアイデアがありまして、
至極単純な話なのですが、あれ?どうやるんだ?と暫く悩んだのでネタにしてみます。
あ、保存先はSQLServerです。2008R2。2012弄りたい。
で、どうやろうかと悩んで出した案
案1.Colo.Nameを文字情報で持つ(FromNameメソッドで復元)
->ブレンドした色は持てない
案2.XMLに書きだして保存
->めんどくさい
案3.intの配列に変換してvarcharで保存
->めんど(ry
結果から言ってしまうとColor.ToARGBというメソッドが既に準備されててintegerに変換して保存します。超簡単。時間返せ。
コード
**修正**2012・03・24(ToARGB使ってなかった・・・orz)
private _color as integer '''''' 色ボタンクリ ''' ''' ''' '''Private Sub cbt_Color_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbt_Color.Click If Me.ColorDialog1.ShowDialog() = DialogResult.OK Then _color = Me.ColorDialog1.Color.ToARGB Call setGradation(Me.cbt_Color, _color, _color) End If End Sub ''' ''' ボタン内色■変えるよ ''' ''' ''' ''' ''' '''Private Sub setGradation(ByRef btn As ccButton, ByVal fcol As Integer, ByVal tcol As Integer, Optional ByVal direction As Drawing2D.LinearGradientMode = Drawing2D.LinearGradientMode.ForwardDiagonal) Dim bmp As Bitmap = New Bitmap(btn.Width, btn.Height) Dim g As Graphics = Graphics.FromImage(bmp) Dim gradBrush As New Drawing2D.LinearGradientBrush( _ g.VisibleClipBounds, _ Color.FromARGB(fcol), _ Color.FromARGB(tcol), _ direction) g.FillRectangle(gradBrush, g.VisibleClipBounds) gradBrush.Dispose() g.Dispose() btn.Image = bmp btn.Refresh() End Sub
Enjoy!