0
https://stackoverflow.com/questions/885696/how-do-i-perform-a-better-colorize-functionより良い色付け機能を実行するにはどうすればよいですか?
の重複私は、私は画像のディテールを失い始める50>ユーザーが色を選択しかしとき、ピクセルを色付けするVB2005で、私はこの問題を解決することができますどのように任意のアイデアを、この機能を使用していますか?
Private badcolor As Color = Color.FromArgb(0, 0, 0, 0)
Public Function grayscalePixel(ByVal basecolor As Color) As Color
Return grayscalePixel(basecolor, 0.3, 0.59, 0.11)
End Function
Public Function grayscalePixel(ByVal basecolor As Color, ByVal RedMix As Double, ByVal GreenMix As Double, ByVal BlueMix As Double) As Color
If basecolor.A = 0 Then
Return badcolor
End If
If (RedMix + GreenMix + BlueMix > 1) Or (RedMix + GreenMix + BlueMix <= 0) Then
Return grayscalePixel(basecolor)
End If
Dim grayval As Integer = basecolor.R * RedMix + basecolor.G * GreenMix + basecolor.B * BlueMix
Return Color.FromArgb(basecolor.A, grayval, grayval, grayval)
End Function
Public Function colorizePixel(ByVal basecolor As Color, ByVal colorize As Color) As Color
If basecolor.A = 0 Then
Return badcolor
End If
Dim grayval As Color = grayscalePixel(basecolor)
Dim r As Integer = Convert.ToInt32(grayval.R) + Convert.ToInt32(colorize.R)
Dim g As Integer = Convert.ToInt32(grayval.R) + Convert.ToInt32(colorize.G)
Dim b As Integer = Convert.ToInt32(grayval.R) + Convert.ToInt32(colorize.B)
If r > 255 Then
r = 255
End If
If g > 255 Then
g = 255
End If
If b > 255 Then
b = 255
End If
If r < 0 Then
r = 0
End If
If g < 0 Then
g = 0
End If
If b < 0 Then
b = 0
End If
Return Color.FromArgb(basecolor.A, r, g, b)
End Function