Box di inserimento testo

venerdì 22 ottobre 2004 - 00.17

Peppe Profilo | Newbie

Ciao a tutti! Ho un problema durante la realizzazione di una form.. Inizio subito con l'esempio. Avete presente in Paint quando decidiamo di inserire un testo? Prima dobbiamo, tramite il mouse, crere un box (quello che viene visualizzato tratteggiato) dove poi andremo ad inserire il testo. Bene, quello che interessa a me e' proprio questo! Sapete dirmi come devo fare per realizzare questo box? Io vorrei fare proprio cosi' come fa Paint , che quando tengo premuto il muose si visualizza tratteggiato e mentre lo allargo viene visualizzato in tempo reale la variazione di dimesione.. Spero di essermi fatto capire con quest'esempio! Grazie a tutti!

Andy Profilo | Senior Member

Ciao Peppe..non so se esiste un oggetto già preparato che ti permetta di fare il rettangolo di cui parlavi, per farlo "a mano" devi crearti 2 Penne, una nera con stile tratteggiato e una del colore dello sfondo.

In pratica il disegno del rettagnolo si sviluppa in 3 eventi:

1) Evento MouseClick, disegni un rettangolo con la 1 pena, dando come coordinate finali le stesse di quelle iniziali; dopodichè ti salvi le 4 coordinate.

2) Evento MouseMove, dove "cancelli" il rettangolo precedente, ridisegnandolo con le vecchie coordinate, ma utilizzando la penna2 con il colore dello sfondo.
Dopodichè disegni un nuovo rettangolo. partendo dalle coordinate del Click fino alle nuove coordinate acquisite dal Mousemove.

3) Evento MouseUp, dove termini il tuo disegno.

Sero di esserti stato d'aiuto..

Ciao.

Peppe Profilo | Newbie

Come impostazione e' perfetta! Solo che ho un problema..se ho uno sfondo impostato nella form come faccio a settare il colore della penna "invisibile"? Perche' se io carico prima uno sfonfo (metti una foto, con tutta la varieta' di colori che ci stanno al suo interno) come faccio a realizzare la penna di supporto? Secondo te mi conviene non realizzare le penna di supporto ma usare direttamente Invalidate() per cancellare il diasegno fatto precedentemente?

Andy Profilo | Senior Member

Effettivamente se il colore dello sfondo non è uniforme si crea il problema del refresh..se fai invalidate() di tutta l'immagine, ad ogni movimento del mouse avresti un effetto di sfarfallamento non bello alla vista..senza contare che se l'immagine è pesante ad ogni movimento perderesti troppo tempo.
Vedi se si può fare l'invalidate solo dell'area che hai disegnato l'ultima volta, agari che so se hai un area 30, 30, 50, 40 fai un refresh di un'area un pixel + grande (29, 29, 51, 41) cosi lo stesso effetto è più veloce e meno pesante alla vista.

..fammi sapere...

Ciao

Peppe Profilo | Newbie

Si, si puo' fare! Ho appena provato e funziona tutto perfettamente! Quando mi hai risposto l'ultima volta io avevo appena appena finito di sincronizzare gli eventi mousedown, mousemove e mouseup..girava tutto ma mi ero accorto coi miei occhi della pesantezza di fare il refresh dell'intera scena al movimento del mouse..poi mi hai dato l'idea giusta..ho visto nell'help e si puo' fare l'invalidate di un rettangolo..e cmq basta direttamente quello li', senza spazio aggiuntivo! Grazie davvero, sei stato di grandissimo aiuto! Fossero tutti come te...

Ciao e grazie ancora,

Peppe

Andy Profilo | Senior Member

...di nulla, mi fa piacere che hai risolto..

A presto.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5