Newsgroup: it.comp.lang.visual-basic
Titolo: scrollBar

come posso utilizzare le scrollbar per far si che spostando il cursore mi
colori una linia disegnata sopra ad una picturebox sfruttando tutta la scala
da 0 a 255, e magari restituirmi il valore del colore in decimale e in
esadecimale.
Grazie anticipatamente.


Chiaro come la notte :)
Cioe' la tua idea sarebbe creareuna cosa tipo:
' Inizio Codice
Option Explicit
Const RED& = &H1
Const GREEN& = &H100
Const BLUE& = &H10000
Const BASE_COLOR& = BLUE
Private Sub Form_Load()
    HScroll1.Max = 255
    Picture1.BackColor = 0
End Sub
Private Sub HScroll1_Change()
    Picture1.BackColor = HScroll1.Value * BASE_COLOR
End Sub
' Fine Codice
Ho capito bene?
Ciaotutti,
*

Gia' che ci sono posto un form carino... Va di molto aggiustato in tutto (e'
solo un esempio) pero' funziona e mostra come creare un mixer di colori; non
fate caso ai nomi, ci ho messo cinque minuti a farlo con un tasso di
sbattimento sottozero :P
Ciaotutti,
*
VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   2490
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5010
   LinkTopic       =   "Form1"
   ScaleHeight     =   2490
   ScaleWidth      =   5010
   StartUpPosition =   3  'Windows Default
   Begin VB.PictureBox Picture4
      Height          =   2235
      Left            =   4260
      ScaleHeight     =   2175
      ScaleWidth      =   555
      TabIndex        =   6
      Top             =   120
      Width           =   615
   End
   Begin VB.PictureBox Picture3
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   3855
      TabIndex        =   5
      Top             =   1740
      Width           =   3915
   End
   Begin VB.HScrollBar HScroll3
      Height          =   255
      Left            =   180
      TabIndex        =   4
      Top             =   2100
      Width           =   3915
   End
   Begin VB.PictureBox Picture2
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   3855
      TabIndex        =   3
      Top             =   900
      Width           =   3915
   End
   Begin VB.HScrollBar HScroll2
      Height          =   255
      Left            =   180
      TabIndex        =   2
      Top             =   1260
      Width           =   3915
   End
   Begin VB.HScrollBar HScroll1
      Height          =   255
      Left            =   180
      TabIndex        =   1
      Top             =   480
      Width           =   3915
   End
   Begin VB.PictureBox Picture1
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   3855
      TabIndex        =   0
      Top             =   120
      Width           =   3915
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Const RED& = &H1
Const GREEN& = &H100
Const BLUE& = &H10000
Const BASE_COLOR& = BLUE
Private Sub Form_Load()
    HScroll1.Max = 255
    HScroll2.Max = 255
    HScroll3.Max = 255
    HScroll1.LargeChange = 8
    HScroll2.LargeChange = 8
    HScroll3.LargeChange = 8
    Picture1.BackColor = 0
    Picture2.BackColor = 0
    Picture3.BackColor = 0
    Picture4.BackColor = 0
End Sub
Private Sub HScroll1_Change()
    Picture1.BackColor = HScroll1.Value * RED
    Picture4.BackColor = Picture1.BackColor + Picture2.BackColor +
Picture3.BackColor
End Sub
Private Sub HScroll2_Change()
    Picture2.BackColor = HScroll2.Value * GREEN
    Picture4.BackColor = Picture1.BackColor + Picture2.BackColor +
Picture3.BackColor
End Sub
Private Sub HScroll3_Change()
    Picture3.BackColor = HScroll3.Value * BLUE
    Picture4.BackColor = Picture1.BackColor + Picture2.BackColor +
Picture3.BackColor
End Sub

 Gia' che ci sono posto un form carino...
Proprio carino. Se invece dell'evento Change delle scrollbar usi l'evento
Scroll, la variazione di colore è continua anche mentre trascini il gadget
della scrollbar.
Manca solo l'indicazione a video del valore delle componenti colore, ed è
pronto per pubblicarlo sul Sito Comune. :-)
Ciao
*Roby*


Ecco pure quelle :P
Facciamo cosi', autore asterix e fornitore roby piazzolla, che io con le
trafile burocratiche non mi sono mai trovato bene, che dici? :)
Ciaotutti,
*
' -----------------------------------------------------------------
VERSION 5.00
Begin VB.Form frmColor
   BorderStyle     =   4  'Fixed ToolWindow
   Caption         =   "Color Mixer"
   ClientHeight    =   2490
   ClientLeft      =   45
   ClientTop       =   285
   ClientWidth     =   6120
   LinkTopic       =   "Form1"
   LockControls    =   -1  'True
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   2490
   ScaleWidth      =   6120
   ShowInTaskbar   =   0   'False
   StartUpPosition =   3  'Windows Default
   Begin VB.TextBox txtBlue
      Height          =   285
      Left            =   4620
      Locked          =   -1  'True
      TabIndex        =   9
      Text            =   "0"
      Top             =   2100
      Width           =   615
   End
   Begin VB.TextBox txtGreen
      Height          =   285
      Left            =   4620
      Locked          =   -1  'True
      TabIndex        =   8
      Text            =   "0"
      Top             =   1260
      Width           =   615
   End
   Begin VB.TextBox txtRed
      Height          =   255
      Left            =   4620
      Locked          =   -1  'True
      TabIndex        =   7
      Text            =   "0"
      Top             =   480
      Width           =   615
   End
   Begin VB.PictureBox pcbMixed
      Height          =   2235
      Left            =   5340
      ScaleHeight     =   2175
      ScaleWidth      =   555
      TabIndex        =   6
      Top             =   120
      Width           =   615
   End
   Begin VB.PictureBox pcbBlue
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   5
      Top             =   1740
      Width           =   5055
   End
   Begin VB.HScrollBar hsbBlue
      Height          =   255
      Left            =   900
      TabIndex        =   4
      Top             =   2100
      Width           =   3615
   End
   Begin VB.PictureBox pcbGreen
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   3
      Top             =   900
      Width           =   5055
   End
   Begin VB.HScrollBar hsbGreen
      Height          =   255
      Left            =   900
      TabIndex        =   2
      Top             =   1260
      Width           =   3615
   End
   Begin VB.HScrollBar hsbRed
      Height          =   255
      Left            =   900
      TabIndex        =   1
      Top             =   480
      Width           =   3615
   End
   Begin VB.PictureBox pcbRed
      Height          =   255
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   0
      Top             =   120
      Width           =   5055
   End
   Begin VB.Label Label3
      Caption         =   "Blu"
      Height          =   255
      Left            =   240
      TabIndex        =   12
      Top             =   2100
      Width           =   735
   End
   Begin VB.Label Label2
      Caption         =   "Verde"
      Height          =   255
      Left            =   240
      TabIndex        =   11
      Top             =   1260
      Width           =   735
   End
   Begin VB.Label Label1
      Caption         =   "Rosso"
      Height          =   255
      Left            =   240
      TabIndex        =   10
      Top             =   480
      Width           =   735
   End
End
Attribute VB_Name = "frmColor"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Const RED& = &H1
Const GREEN& = &H100
Const BLUE& = &H10000
Const BASE_COLOR& = BLUE
Private Sub Form_Load()
    hsbRed.Max = 255
    hsbGreen.Max = 255
    hsbBlue.Max = 255
    hsbRed.LargeChange = 8
    hsbGreen.LargeChange = 8
    hsbBlue.LargeChange = 8
    pcbRed.BackColor = 0
    pcbGreen.BackColor = 0
    pcbBlue.BackColor = 0
    pcbMixed.BackColor = 0
End Sub
Private Sub hsbBlue_Change()
    ChangeBlue
End Sub
Private Sub hsbBlue_Scroll()
    ChangeBlue
End Sub
Private Sub hsbGreen_Change()
    ChangeGreen
End Sub
Private Sub hsbGreen_Scroll()
    ChangeGreen
End Sub
Private Sub hsbRed_Change()
    ChangeRed
End Sub
Private Sub hsbRed_Scroll()
    ChangeRed
End Sub
Sub ChangeBlue()
    pcbBlue.BackColor = hsbBlue.Value * BLUE
    txtBlue.Text = hsbBlue.Value
    pcbMixed.BackColor = pcbRed.BackColor + pcbGreen.BackColor +
pcbBlue.BackColor
End Sub
Sub ChangeGreen()
    pcbGreen.BackColor = hsbGreen.Value * GREEN
    txtGreen.Text = hsbGreen.Value
    pcbMixed.BackColor = pcbRed.BackColor + pcbGreen.BackColor +
pcbBlue.BackColor
End Sub
Sub ChangeRed()
    pcbRed.BackColor = hsbRed.Value * RED
    txtRed.Text = hsbRed.Value
    pcbMixed.BackColor = pcbRed.BackColor + pcbGreen.BackColor +
pcbBlue.BackColor
End Sub

 trafile burocratiche non mi sono mai trovato bene, che dici? :)
Ho inserito la possibilità di modificare i valori anche dai textbox, ho
accorciato il codice usando gli array di oggetti, ed ho inserito l'about-box
se clicchi sulla picturebox che mostra il colore finale.
Comunque l'idea e la maggior parte del codice sono tuoi, è giusto che lo
mandi tu.
Ciao
*Roby*
 ' -----------------------------------------------------------------
VERSION 5.00
Begin VB.Form frmColor
   BorderStyle     =   4  'Fixed ToolWindow
   Caption         =   "Color Mixer"
   ClientHeight    =   2490
   ClientLeft      =   45
   ClientTop       =   285
   ClientWidth     =   6120
   LinkTopic       =   "Form1"
   LockControls    =   -1  'True
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   2490
   ScaleWidth      =   6120
   StartUpPosition =   3  'Windows Default
   Begin VB.TextBox txtColore
      Height          =   285
      Index           =   2
      Left            =   4620
      MaxLength       =   3
      TabIndex        =   9
      Text            =   "0"
      Top             =   2100
      Width           =   615
   End
   Begin VB.TextBox txtColore
      Height          =   285
      Index           =   1
      Left            =   4620
      MaxLength       =   3
      TabIndex        =   8
      Text            =   "0"
      Top             =   1260
      Width           =   615
   End
   Begin VB.TextBox txtColore
      Height          =   255
      Index           =   0
      Left            =   4620
      MaxLength       =   3
      TabIndex        =   7
      Text            =   "0"
      Top             =   480
      Width           =   615
   End
   Begin VB.PictureBox pcbMixed
      Height          =   2235
      Left            =   5340
      ScaleHeight     =   2175
      ScaleWidth      =   555
      TabIndex        =   6
      Top             =   120
      Width           =   615
   End
   Begin VB.PictureBox pcbColore
      BackColor       =   &H00000000&
      Height          =   255
      Index           =   2
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   5
      Top             =   1740
      Width           =   5055
   End
   Begin VB.HScrollBar hsbColore
      Height          =   255
      Index           =   2
      LargeChange     =   8
      Left            =   900
      Max             =   255
      TabIndex        =   4
      Top             =   2100
      Value           =   127
      Width           =   3615
   End
   Begin VB.PictureBox pcbColore
      BackColor       =   &H00000000&
      Height          =   255
      Index           =   1
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   3
      Top             =   900
      Width           =   5055
   End
   Begin VB.HScrollBar hsbColore
      Height          =   255
      Index           =   1
      LargeChange     =   8
      Left            =   900
      Max             =   255
      TabIndex        =   2
      Top             =   1260
      Value           =   127
      Width           =   3615
   End
   Begin VB.HScrollBar hsbColore
      Height          =   255
      Index           =   0
      LargeChange     =   8
      Left            =   900
      Max             =   255
      TabIndex        =   1
      Top             =   480
      Value           =   127
      Width           =   3615
   End
   Begin VB.PictureBox pcbColore
      BackColor       =   &H00000000&
      Height          =   255
      Index           =   0
      Left            =   180
      ScaleHeight     =   195
      ScaleWidth      =   4995
      TabIndex        =   0
      Top             =   120
      Width           =   5055
   End
   Begin VB.Label LblDescrizione
      Caption         =   "Blu"
      Height          =   255
      Index           =   2
      Left            =   240
      TabIndex        =   12
      Top             =   2100
      Width           =   735
   End
   Begin VB.Label LblDescrizione
      Caption         =   "Verde"
      Height          =   255
      Index           =   1
      Left            =   240
      TabIndex        =   11
      Top             =   1260
      Width           =   735
   End
   Begin VB.Label LblDescrizione
      Caption         =   "Rosso"
      Height          =   255
      Index           =   0
      Left            =   240
      TabIndex        =   10
      Top             =   480
      Width           =   735
   End
End
Attribute VB_Name = "frmColor"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Enum IndiceColori
   IC_Rosso = 0
   IC_Verde
   IC_Blu
End Enum
Dim aMoltiplicatoreColore(2) As Long
Private Declare Function ShellAbout Lib _
   "shell32.dll" Alias "ShellAboutA" _
   (ByVal hwnd As Long, ByVal szApp As String, _
   ByVal szOtherStuff As String, _
   ByVal hIcon As Long) As Long
Private Sub Form_Load()
    aMoltiplicatoreColore(IC_Rosso) = &H1
    aMoltiplicatoreColore(IC_Verde) = &H100
    aMoltiplicatoreColore(IC_Blu) = &H10000
    hsbColore(IC_Rosso).Value = 127
    hsbColore(IC_Verde).Value = 127
    hsbColore(IC_Blu).Value = 127
End Sub
Private Sub hsbColore_Change(Index As Integer)
    ChangeColor Index
End Sub
Private Sub hsbColore_Scroll(Index As Integer)
    ChangeColor Index
End Sub
Sub ChangeColor(Index As Integer)
    pcbColore(Index).BackColor = hsbColore(Index).Value * _
       aMoltiplicatoreColore(Index)
    txtColore(Index).Text = hsbColore(Index).Value
    pcbMixed.BackColor = pcbColore(IC_Rosso).BackColor + _
       pcbColore(IC_Verde).BackColor + pcbColore(IC_Blu).BackColor
End Sub
Private Sub txtColore_Change(Index As Integer)
   Dim iValore As Integer
   On Error Resume Next
   iValore = Val(txtColore(Index).Text)
   If Err <> 0 Then
      iValore = 255
   End If
   On Error GoTo 0
   If iValore < 0 Then iValore = 0
   If iValore > 255 Then iValore = 255
   hsbColore(Index).Value = iValore
End Sub
Private Sub pcbMixed_Click()
   ShellAbout Me.hwnd, "Color Mixer", "Autore: Asterix" & vbCrLf _
          & "Modifiche minori: *Roby*", 0
End Sub