Круговая палитра выбора цвета - Visual Basic .NET
Формулировка задачи:
Привет всем, помогите реализовать идею: круговой выбор цвета как в графических редакторах
вот к примеру Paint.NET. Кстати реализовано на NET:
Решение задачи: «Круговая палитра выбора цвета»
textual
Листинг программы
Imports System.Drawing.Drawing2D Public Class Form1 Private Function HSVtoRGB(ByVal hue As Double, ByVal saturation As Double, ByVal value As Double) As Color Dim r, g, b, f, p, q, t As Double Dim i As Integer If saturation = 0 Then Return Color.FromArgb(CInt(255 * value), CInt(255 * value), CInt(255 * value)) End If hue /= 60 i = CInt(Math.Floor(hue)) f = hue - i p = value * (1 - saturation) q = value * (1 - saturation * f) t = value * (1 - saturation * (1 - f)) Try Select Case i Case 0 r = value : g = t : b = p Case 1 r = q : g = value : b = p Case 2 r = p : g = value : b = t Case 3 r = p : g = q : b = value Case 4 r = t : g = p : b = value Case 5 r = value : g = p : b = q End Select Return Color.FromArgb(CInt(255 * r), CInt(255 * g), CInt(255 * b)) Catch ex As Exception End Try Return Color.Empty End Function Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint e.Graphics.Clear(SystemColors.Control) Dim w, h As Integer w = PictureBox1.ClientSize.Width >> 1 h = PictureBox1.ClientSize.Height >> 1 Dim p1 As Point = New Point(w, h) Dim colors() As Color = New Color(359) {} Dim points() As PointF = New PointF(359) {} For phi As Integer = 0 To 359 points(phi) = New PointF(CSng(Math.Cos(phi * Math.PI / 180) * w + w), CSng(h - Math.Sin(phi * Math.PI / 180) * h)) colors(phi) = HSVtoRGB(phi, 1, 1) Next Dim b As New PathGradientBrush(points, WrapMode.Clamp) b.CenterColor = Color.White b.CenterPoint = p1 b.SurroundColors = colors e.Graphics.SmoothingMode = SmoothingMode.HighQuality e.Graphics.FillEllipse(b, 0, 0, w << 1, w << 1) End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д