Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Disegnare su immagine

Ciao,
non ho idea di come possa fare.. ma ne avrei veramente la necessità
chiedo scusa.
Forse qualche d'uno mi può consigliare o magari indirizzare sotto qualche
esempio.
Sopra ad una normalissima immagine, vorrei disegnare un reticolo che formi
dei rettangoli o quadrati e poterli poi colorare o segnare a mo di "puzzle o
scacchiera" e scriverci sopra (tipo battaglia navale)
- IMMAGINE GRAFICA
- CREO UN RETICOLO DEL TIPO QUADRETTATURA (10x5)
- della serie A1  B5 ecc... scrivendoci pure dentro qualche cosa
qualche consiglio?
GRAZIE
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

 scacchiera" e scriverci sopra (tipo battaglia navale)
Crea un progetto nuovo e incolla nella form questo codice:
-----------------------------
Option Explicit
Private Type MioRect
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type
Const kNumQuadrati = 5
Dim MatriceCoordinateQuadrati(kNumQuadrati, kNumQuadrati) _
    As MioRect
Private Sub DisegnaGriglia()
   Dim iRiga As Integer
   Dim iColonna As Integer
   Dim lStepX As Long
   Dim lStepY As Long
   lStepX = Me.ScaleWidth \ kNumQuadrati
   lStepY = Me.ScaleHeight \ kNumQuadrati
   For iColonna = 1 To kNumQuadrati
      Me.Line (0, iColonna * lStepY)- _
         (Me.ScaleWidth, iColonna * lStepY)
   Next
   For iRiga = 1 To kNumQuadrati
      Me.Line (iRiga * lStepX, 0)- _
        (iRiga * lStepX, Me.ScaleHeight)
   Next
   For iColonna = 1 To kNumQuadrati
      For iRiga = 1 To kNumQuadrati
         MatriceCoordinateQuadrati(iRiga, iColonna).Left = _
            (iRiga - 1) * lStepX
         MatriceCoordinateQuadrati(iRiga, iColonna).Top = _
            (iColonna - 1) * lStepY
         MatriceCoordinateQuadrati(iRiga, iColonna).Bottom = _
            iColonna * lStepY
         MatriceCoordinateQuadrati(iRiga, iColonna).Right = _
            iRiga * lStepX
      Next
   Next
End Sub
Private Sub RiempiQuadrato(x As Long, y As Long)
   Dim x1 As Long
   Dim x2 As Long
   Dim y1 As Long
   Dim y2 As Long
   x1 = MatriceCoordinateQuadrati(x, y).Left _
      + Screen.TwipsPerPixelX
   x2 = MatriceCoordinateQuadrati(x, y).Right _
      - Screen.TwipsPerPixelX
   y1 = MatriceCoordinateQuadrati(x, y).Top _
      + Screen.TwipsPerPixelY
   y2 = MatriceCoordinateQuadrati(x, y).Bottom _
      - Screen.TwipsPerPixelX
   Me.Line (x1, y1)-(x2, y2), vbRed, BF
End Sub
Private Sub Form_Activate()
   Me.AutoRedraw = True
   Me.Cls
   DisegnaGriglia
   RiempiQuadrato Int(Rnd() * kNumQuadrati + 1), _
                  Int(Rnd() * kNumQuadrati + 1)
End Sub
Private Sub Form_Click()
   Form_Activate
End Sub
-----------------------------
Ovviamente i riquadri saranno quadrati o rettangolari in base alla
dimensione della Form. Per vedere cosa intendo, prova a ridimensionare la
form e poi a cliccarci sopra.
Ciao
*Roby*

 -----------------------------
Urka... provo subito, per ora grazie... mi ci vorra una settimana per capire
il codice... ci struso...
Posso permettermi di chiederti eventuali dettagli nel caso di....
difficoltà?
per ora ho caricato l'immagine e questa si "copre" correttamente dalla
griglia e dal riquadro (rettangolo/quadrato) azz... ottimo... ora devo
capirci dentro per modifcare il tutto al mio caso.
GRAZIE MILLE!
provo subito
Anto...


 nel caso di.... difficoltà?
Certo. Ci si risente in questo thread quando vuoi.
Ciao
*Roby*


Dunque... quasi na settimana...:-))
ci ho strusato sopra un pochetto ma le mie conoscenze sono limitate...un
codice ottimo.
avrtei cento domande... o meglio qui devo passare a pagare qualche euro!
Se non è un disturbo ho provato ma brrrr.. no ci sono riuscito:
-Sarebbe possibile metterla su un'immage non nel solo form così da poterla
ridimensionare a piacere? sul form classico devo definirla esternamente
-È possibile al centro di ogni singola casella far scrivere un carattere che
poi resti anche quando è rosso?
-Azz... nonm ho capito dove dai il colore alla linea...
-Per la precisione del rettangolo nell'immagine si riesce a partire non dal
bordo ma poco dopo?
Ho anche provato con un 180x180 ma le linee sembrano impastarsi anche
ingrandedo a pieno schermo...
ci sto comunque strusando sopra mica male!
Devo poi selezionare da una lista quali dei 18x18 o 180x180 far colorare, ma
li ci penso poi quando riesco a sistemare il sopra..:-))
scusa il disturbo e spero riouscire a far qualche cosa!
saluti e ancora grazie per la dritta che sto cercando di ampliare!
ciao Anto


> -Azz... nonm ho capito dove dai il colore alla linea...
Forecolor...  ok...
ma sempre solo sul desktop che non ha il comando stretch...
IMAGE non ha scalewith e line
Picture1 potrebbe andare ma niet per stretch... o simile...
GRAZIE...
ps: nel caso se puoi, ti potrei esporre un esempio di cosa mi piacerebbe
fare per email... e nel caso... not problem per dover retribuire il
disturbo... !!
In pratica si tratta di definire e trattare e sovra-colorare dei "semplici"
(non per me) rettangoli su immagini fisse.
Grazie
nel caso apipapip su hotmail punto com
sry ciao!


 fare per email...
No. Come ti ho già detto è un hobby, di lavoro ne ho già fin troppo ;-)
Continuiamo qui, vedrai che alla fine se ne esce. Non ti far scrupolo di
chiedere, anche senza aspettare una settimana.
Ciao
*Roby*

 chiedere, anche senza aspettare una settimana.
Grazie per la comprensione...
sig! non ci riesco... ho provato tra ieri e oggi ma niet...
In pratica guarda l'immagine qui che ti linko per avere un'idea di quel che
mi piacerebbe fare.
Io ho una lista di dati da 1 a xx a dipendenza dei quadrati/rettangoli e
devo colorarli secondo la presenza della lista.
L'immagine si divide: 10x10  oppure 18x18 oppure 180x180
è che già con il 180 siam mica male incasinati...
prova a dare n'occhiatina al link:
http://www.telesupport.nl/wave/locator.gif
questa è 16x20 ma sfrutta solo una parte di cartina...
se uso una carta completa sono
prima 18x18 e poi 180x180 separazioni che a loro volta in totale sarebbero
1800x1800 come numero massimo nella combinazione letterale che ho nell'altra
applicazione di riconoscimento:
---> Like "[A-R][A-S]##[A-X][A-X]"
e a dipendenza della lista, corrisponde il "colorito"...
uhmm mi sa che devo rinunciare.. ma visto che ce ne sono in giro non ho mai
trovato una sorgentella d'esempio... se non la tua per la form o picture.
ciao e grazie del possibile consiglio!


 è che già con il 180 siam mica male incasinati...
Ho dato un occhiata all'immagine, e mi pare di capire che hai bisogno di
avere 3 ordini di riquadri di dimensioni diverse contemporaneamente. Più
sono grandi i riquadri, e più deve essere spessa la linea di demarcazione. I
riquadri inoltre devono contenere una indicazione testuale (o + di una su
righe diverse?).
Inoltre l'immagine può essere zoomata a piacere.
Ovviamente zoomare una immagine che contiene delle righe spesse un solo
pixel è un suicidio (la riga tende a sparire) quindi il reticolo va
disegnato dopo aver effettuato lo zoom.
Quindi i problemi grafici da risolvere sono questi:
Effettuare lo zoom dell'immagine su una PictureBox bersaglio, in modo che ci
si possa scrivere sopra.
Disegnare sulla PictureBox giàà zoomata una griglia di quadrati grandi con
scritte dentro.
Disegnare una griglia di quadrati medi (con scritte dentro?)
Disegnare una griglia di quadrati piccoli con scritte dentro
Per effettuare una copia dell'immagine zoomata, devi fare il calcolo delle
nuove dimensioni con il sistema dello ZoomRatio che ho spiegato in altro
messaggio, e poi usare il metodo PaintPicture che permette anche di
ridimensionare durante la copia.
Per disegnare la griglia, usa la funzione DisegnaGriglia, inserendo anche un
parametro per lo spessore della linea, e per la scritta da inserire nel
quadrato (anche per questo hai avuto un esempio nel messaggio precedente).
Il numero di quadrati da ottenere resta uguale indipendentemente dalla
percentuale di zoom.
Se ci riesci, poi passiamo ad altro, altrimenti è semplicemente un compito
troppo difficile per il tuo livello attuale di programmazione, e non vale la
pena di continuare per ora.
Però è facendo che si impara. :-)
Ciao
*Roby*

 Perň č facendo che si impara. :-)
Mi sa che gira e rigira... arriviamo qui!
SIG!
sto tentando in tanti modi ma quello piů semplice e funzionale "mi sfugge"!
sig2!
ciao
