Tôi có thể không sử dụng thuật ngữ màu chính xác nhưng tôi muốn cơ bản có thể mở rộng màu tương tự như hình ảnh đính kèm. Tôi đã tìm kiếm sự bão hòa để làm điều này, vì nó xuất hiện đúng phiên bản chỉ là một phiên bản ít bão hòa phải của bên trái.Làm thế nào để Desaturate một màu?
Tôi đã cố gắng này (mà tôi tìm thấy) nhưng nó không phải là tìm cách chính xác tại tất cả:
Public Shared Function GetDesaturatedColor(color As Color) As Color
Const kValue As Double = 0.01R
Dim greyLevel = (color.R * 0.299R) + _
(color.G * 0.587R) + _
(color.B * 0.144R)
Dim r = greyLevel * kValue + (color.R) * (1 - kValue)
Dim g = greyLevel * kValue + (color.G) * (1 - kValue)
Dim b = greyLevel * kValue + (color.B) * (1 - kValue)
' ColorUtils.ToByte converts the double value
' to a byte safely
Return color.FromArgb(255, _
ColorUtils.ToByte(r), _
ColorUtils.ToByte(g), _
ColorUtils.ToByte(b))
End Function
Có ai biết về một số thuật toán có thể làm điều này?
Tìm ở đây RGB to HSL và bạn sẽ tìm thấy nhiều bài viết về chủ đề này. – Brad