Visual Basic 6 (VB6) 的颜色选择器控件

问题描述 投票:0回答:3

我正在寻找 Visual Basic 6 的免费颜色选择器控件。类似于 thisthis。有吗

更新。 这是我迄今为止发现的内容:

  1. Photoshop 风格的颜色选择器
  2. 带有示例代码的颜色选择器控件
vb6
3个回答
7
投票

看看:https://web.archive.org/web/20111001144343/http://www.devx.com/vb2themax/Tip/19257

它应该显示标准颜色对话框(comdlg32.dll中的ChooseColor API)。


为方便起见,代码如下:

Private Type ChooseColorStruct
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As Long
    flags As Long
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" _
    (lpChoosecolor As ChooseColorStruct) As Long
Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor _
    As Long, ByVal lHPalette As Long, lColorRef As Long) As Long
    
Private Const CC_RGBINIT = &H1&
Private Const CC_FULLOPEN = &H2&
Private Const CC_PREVENTFULLOPEN = &H4&
Private Const CC_SHOWHELP = &H8&
Private Const CC_ENABLEHOOK = &H10&
Private Const CC_ENABLETEMPLATE = &H20&
Private Const CC_ENABLETEMPLATEHANDLE = &H40&
Private Const CC_SOLIDCOLOR = &H80&
Private Const CC_ANYCOLOR = &H100&
Private Const CLR_INVALID = &HFFFF


' Show the common dialog for choosing a color.
' Return the chosen color, or -1 if the dialog is canceled
'
' hParent is the handle of the parent form
' bFullOpen specifies whether the dialog will be open with the Full style 
' (allows to choose many more colors)
' InitColor is the color initially selected when the dialog is open

' Example:
'    Dim oleNewColor As OLE_COLOR
'    oleNewColor = ShowColorsDialog(Me.hwnd, True, vbRed)
'    If oleNewColor <> -1 Then Me.BackColor = oleNewColor

Function ShowColorDialog(Optional ByVal hParent As Long, _
    Optional ByVal bFullOpen As Boolean, Optional ByVal InitColor As OLE_COLOR) _
    As Long
    Dim CC As ChooseColorStruct
    Dim aColorRef(15) As Long
    Dim lInitColor As Long
  
    ' translate the initial OLE color to a long value
    If InitColor <> 0 Then
        If OleTranslateColor(InitColor, 0, lInitColor) Then
            lInitColor = CLR_INVALID
        End If
    End If
    
    'fill the ChooseColorStruct struct
    With CC
        .lStructSize = Len(CC)
        .hwndOwner = hParent
        .lpCustColors = VarPtr(aColorRef(0))
        .rgbResult = lInitColor
        .flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT Or IIf(bFullOpen, _
            CC_FULLOPEN, 0)
    End With
    
    ' Show the dialog
    If ChooseColor(CC) Then
        'if not canceled, return the color
        ShowColorDialog = CC.rgbResult
    Else
        'else return -1
        ShowColorDialog = -1
    End If
End Function

2
投票

VB6 中内置了一个颜色选择器。通用对话框控件可以用作颜色选择器

这是代码示例 来自 VB6 手册

Private Sub Command1_Click()
  ' Set Cancel to True
  CommonDialog1.CancelError = True
  On Error GoTo ErrHandler
  'Set the Flags property
  CommonDialog1.Flags = cdlCCRGBInit
  ' Display the Color Dialog box
  CommonDialog1.ShowColor
  ' Set the form's background color to selected color 
  Form1.BackColor = CommonDialog1.Color
  Exit Sub

ErrHandler:
  ' User pressed the Cancel button
End Sub

0
投票

我运行的是VB6企业版,所以我不知道这是否适用于专业版和标准版。当我单击主 VB6 IDE 中的“视图”菜单时,我可以选择“调色板”,它会打开一个颜色选择器,允许混合和使用自定义颜色。它工作得很好,因为它可以接受 RGB 值,或者您可以使用滑块动态混合颜色。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.