+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [VB.net 2017] - Creazione scala colori partendo da valori iniziali R,G,B.

  1. #1
    Dev-01 non è in linea Scolaretto
    Post
    445

    [VB.net 2017] - Creazione scala colori partendo da valori iniziali R,G,B.

    Buongiorno,

    avrei la necessità di creare una scala di colori come quella creata da MSPaint quando si apre la finestra di selezione colori.

    Partendo dai valori iniziali come da oggetto, dovrei creare la scala partendo dal nero e arrivando al bianco ma restando sempre "sul tono".

    Ho tentato ad ordinare i colori secondo valore anche per poi trovarmi le differenze tra i valori e procedere alla creazione utilizzando le costanti ricavate ma il lavoro è molto oneroso in termini di scrittura tenendo conto anche di eventuali valori uguali per cui mi chiedevo se qualche algoritmo a me sconosciuto potesse venirmi in aiuto.

    Grazie a chi vorrà aiutarmi.

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3
    Quello che chiedi dovrebbe essere facilmente realizzabile mediante l'uso di una API, e specificamente la ColorHSLToRGB.
    Questa API restituisce il valore Long di un colore passando come argomenti i valori di tonalità (0 - 240), luminanza (0 - 240) e saturazione (0 - 240)

    Mediante un ciclo, variando il valore di luminanza, e impostando opportunamente i valori di tonalità e saturazione, puoi ottenere quello che ti serve.

    Con lo stesso sistema, ma ciclando anche il valore di tonalità (in questo caso ti conviene impostare la luminanza a un valore medio di 120), puoi ottenere anche l'intera carta dei colori, sempre presente in paint alla sinistra dello slider di cui parli.

    Per ottenere da un colore rgb i corrispondenti valori di Tonalità, Luminanza e Saturazione, invece, si usa la ColorRGBToHSL.
    Queste le due dichiarazioni API:

    codice:
    Declare Function ColorRGBToHLS Lib "shlwapi.dll" (ByVal clrRGB As Integer, ByRef pwHue As Integer, ByRef pwLuminance As Integer, ByRef pwSaturation As Integer) As Integer
    Declare Function ColorHLSToRGB Lib "shlwapi.dll" (ByVal wHue As Integer, ByVal wLuminance As Integer, ByVal wSaturation As Integer) As Integer
    TheTruster
    Ultima modifica di TheTruster; 27-02-2019 14:27 
    Il Crossposting è vietato dalla Netiquette!




  3. #3
    Dev-01 non è in linea Scolaretto
    Post
    445
    Ti ringrazio infinitamente. Provo subito.

  4. #4
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    salve vorrei chiedere una cosa di questo tema io ho VB2017 quando devo cambiare un colore di un qualsiasi controllo si seleziona il colore con la freccetta e si puo inserire il valore RGB ecco questo ultimo non mi funziona anche se il valore e giusto, sapete se bisogna abilitare qualcosa nel idle ? mi dice valore non valido

  5. #5
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3

    Exclamation Moderazione

    Quote Originariamente inviato da glak Visualizza il messaggio
    quando devo cambiare un colore di un qualsiasi controllo si seleziona il colore con la freccetta e si puo inserire il valore RGB ecco questo ultimo non mi funziona anche se il valore e giusto, sapete se bisogna abilitare qualcosa nel idle ? mi dice valore non valido
    Considerato che la domanda proposta da Dev-01 è relativa alla programmazione, mentre la tua richiesta riguarda una funzionalità dell'IDE, direi che il quesito non c'entra assolutamente nulla con l'argomento iniziale del thread.
    In questi casi è bene aprire una nuova discussione.

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  6. #6
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    805
    OK apriro un altra discussione...

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi