114 messaggi dal 09 luglio 2009
Buonasera a tutti.
per una mia piccola applicazione in .net winforms ho necessità di colorare una parte di una immagine.

Mi spiego meglio:
l'utente inserisce una immagine di una scarpa, di un pallone, o di qualsiasi altro oggetto. Tale oggetto è completamente bianco.

Vorrei che l'utente potesse selezionare una parte di una immagine e colorarla di un colore a scelta che seleziona da un menu a tendina o da una tavolozza colori.

Il problema è capire come colorare parte di una immagine... sapete aiutarmi?

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Marco,


ho necessità di colorare una parte di una immagine.

Puoi fornire più informazioni? Cosa devi realizzare esattamente?


Tale oggetto è completamente bianco.

Non può essere completamente bianco, altrimenti non si vedrebbe nulla. L'immagine è un disegno con dei contorni? Devi realizzare uno di quegli album da colorare, tipo questo?
https://itunes.apple.com/app/id1444418347?mt=8&ign-mpt=uo%3D4

L'immagine caricata dagli utenti è completamente arbitraria o possono scegliere una delle immagini che gli hai messo a disposizione tu?

ciao,
Moreno

Enjoy learning and just keep making
114 messaggi dal 09 luglio 2009
Buonasera Moreno,
scusami in effetti sono proprio stato poco chiaro.

L'immagine che sceglie l'utente è una tra le immagini che io passo tra una serie di scelte. L'immagine è con contorno nero e tutto bianco all'interno (se apri il link che mi hai proposto un pò come l'immagine del camaleonte).

Io vorrei che l'utente potesse scegliere, con un solo clic, cosa colorare (per esempio cliccando sulle zampe e scegliendo un colore da un menu a tendina o da una tavolozza colori).

Spero di essere stato più chiaro adesso.

Molte grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, bene, allora puoi usare la libreria AForge.NET che è in grado di fare il "flood fill", cioè riempire un'area di colore. Te la cavi con poche righe di codice, come vedi in questo esempio. E' in C# ma lo puoi convertire facilmente in VB.NET.
http://www.aforgenet.com/framework/features/flood_fill_filters.html

In pratica tu gli fornisci il colore e le coordinate del punto in cui l'utente ha cliccato, poi lui riempie l'area. Per ottenere le coordinate del punto puoi gestire il click su un PictureBox, come vedi qui:
https://stackoverflow.com/questions/18040945/read-picture-box-mouse-coordinates-on-click

AForge.NET lo puoi ottenere come pacchetto NuGet.
https://www.nuget.org/packages/AForge.Imaging/

ciao,
Moreno

Enjoy learning and just keep making
114 messaggi dal 09 luglio 2009
Perfetto Moreno!
ti ringrazio.

cercherò di leggere dettagliatamente tutta la documentazione che mi hai suggerito!

Ancora grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Prego. Poi hai bisogno di salvarti nel database quale colore è stato associato a quale area?

Enjoy learning and just keep making
114 messaggi dal 09 luglio 2009
Bhe si... penso che dovrò ottemperare a questa funzionalità...
114 messaggi dal 09 luglio 2009
AGGIORNAMENTO
è corretto l'utillizzo di IntPoint per valorizzare la property StartingPoint inoltre caricando la bitmap direttamente da percorso fisco tutto funziona.


Ancora buongiorno Moreno,
stavo cercando di applicare il codice ad un programmino di prova, giusto per vedere come questo lavorava ed il suo risultato.

Ho applicato questo codice

Dim image As New Bitmap(My.Resources.imageBMP)

Dim filter As New PointedColorFloodFill
filter.Tolerance = Color.FromArgb(150, 92, 92)
filter.FillColor=Color.FromArgb(255,255,255)
filter.StartingPoint = New Point(150, 100)
filter.ApplyInPlace(image)

Sulla penultima riga ricevo l'errore "Non è possibile convertire il valore di tipo Point in IntPont". Questo perchè StartingPoint e una proprietà di tipo IntPoint...

Cambiando però la riga con:
filter.StartingPoint = New AForge.IntPoint(150, 100)

il codice viene mandato in esecuzione correttamente ma sul metodo ApplyInPlace ricevo l'errore:

"AForge.Imaging.UnsupportedImageFormatException: 'Source pixel format is not supported by the filter."

Posto che dovrò studiarlo per bene, se tu hai già lavorato con queste procedure sai darmi qualche dritta circa gli errori di cui sopra?

Ti ringrazio
Modificato da marcopuccio il 09 gennaio 2019 11.03 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.