【发布时间】:2014-04-30 07:57:19
【问题描述】:
我有 2 种颜色来自旧的 VB6 格式。
在这种情况下,这两种颜色是 vbBlack 和 vbBlack。 我需要混合/混合它们。
在VB6中说我只是说:
Public Function BlendColors(ByVal lColor1 As Long, ByVal lColor2 As Long) As Long
BlendColors = RGB( _
((lColor1 And &HFF) + (lColor2 And &HFF)) / 2, _
(((lColor1 \ &H100) And &HFF) + ((lColor2 \ &H100) And &HFF)) / 2, _
(((lColor1 \ &H10000) And &HFF) + ((lColor2 \ &H10000) And &HFF)) / 2)
End Function
现在使用 VB.NET,我首先必须将这两个 Win32 颜色代码转换为颜色。
我正在使用
Public Function IntegerToColor(ByVal uColorValue As Integer) As Color
Dim nColor As Color = ColorTranslator.FromWin32(uColorValue)
Return nColor
End Function
然后我使用以下函数来实际混合这些颜色:
Dim nBlendedColor As Color = Color.FromArgb((c1.A + c2.A) \ 2,
(c1.R + c2.R) \ 2,
(c1.G + c2.G) \ 2,
(c1.B + c2.B) \ 2)
然而,这个函数会抛出一个OverflowException,告诉我我不能除以 0。
我做错了什么?
【问题讨论】:
-
我不明白需要先转换成Color,然后进行计算。
标签: vb.net colors vb6 migration type-conversion