Круговая палитра выбора цвета - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Привет всем, помогите реализовать идею: круговой выбор цвета как в графических редакторах вот к примеру Paint.NET. Кстати реализовано на NET:

Решение задачи: «Круговая палитра выбора цвета»

textual
Листинг программы
  1. Imports System.Drawing.Drawing2D
  2. Public Class Form1
  3.     Private Function HSVtoRGB(ByVal hue As Double, ByVal saturation As Double, ByVal value As Double) As Color
  4.         Dim r, g, b, f, p, q, t As Double
  5.         Dim i As Integer
  6.         If saturation = 0 Then
  7.             Return Color.FromArgb(CInt(255 * value), CInt(255 * value), CInt(255 * value))
  8.         End If
  9.         hue /= 60
  10.         i = CInt(Math.Floor(hue))
  11.         f = hue - i
  12.         p = value * (1 - saturation)
  13.         q = value * (1 - saturation * f)
  14.         t = value * (1 - saturation * (1 - f))
  15.         Try
  16.             Select Case i
  17.                 Case 0
  18.                     r = value : g = t : b = p
  19.                 Case 1
  20.                     r = q : g = value : b = p
  21.                 Case 2
  22.                     r = p : g = value : b = t
  23.                 Case 3
  24.                     r = p : g = q : b = value
  25.                 Case 4
  26.                     r = t : g = p : b = value
  27.                 Case 5
  28.                     r = value : g = p : b = q
  29.             End Select
  30.             Return Color.FromArgb(CInt(255 * r), CInt(255 * g), CInt(255 * b))
  31.         Catch ex As Exception
  32.  
  33.         End Try
  34.         Return Color.Empty
  35.     End Function
  36.  
  37.     Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
  38.         e.Graphics.Clear(SystemColors.Control)
  39.         Dim w, h As Integer
  40.         w = PictureBox1.ClientSize.Width >> 1
  41.         h = PictureBox1.ClientSize.Height >> 1
  42.         Dim p1 As Point = New Point(w, h)
  43.         Dim colors() As Color = New Color(359) {}
  44.         Dim points() As PointF = New PointF(359) {}
  45.         For phi As Integer = 0 To 359
  46.             points(phi) = New PointF(CSng(Math.Cos(phi * Math.PI / 180) * w + w),
  47.                            CSng(h - Math.Sin(phi * Math.PI / 180) * h))
  48.             colors(phi) = HSVtoRGB(phi, 1, 1)
  49.         Next
  50.         Dim b As New PathGradientBrush(points, WrapMode.Clamp)
  51.         b.CenterColor = Color.White
  52.         b.CenterPoint = p1
  53.         b.SurroundColors = colors
  54.         e.Graphics.SmoothingMode = SmoothingMode.HighQuality
  55.         e.Graphics.FillEllipse(b, 0, 0, w << 1, w << 1)
  56.     End Sub
  57. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут