[B .NET Grafica] Come "disegnare" barra delle ore

martedì 23 giugno 2015 - 15.13

Mrk31 Profilo | Newbie

Ciao a tutti,
innanzitutto mi scuso per il tittolo criptico .

Mi spiego meglio avrei bisogno di realizzare graficamente una Barra/Tabella/Agenda "numerata" da 0 a 24 (23:59)...

Poi dovrei riempire "colorare" la parte corrispondente ad una fascia con relativa ora di inizio e di fine immessa dall'utente. Tutto ciò per ogni giorno della settimana.

Ad esempio A "barre" così:


812x252 19Kb


Oppure una cosa stile Calendario/Tabella:


535x310 18Kb


E' possibile con qualche oggetto oppure con qualche escamotage ottenere qualcosa del genere?

P.S. e se volessi anche modificare una fascia già creata come la seleziono?

ysdemarc Profilo | Expert

Se deve essere un'immagine devi utilizzare l'oggetto System.Drawing.Graphics relativo al controllo.
il Graphics poi ti presenta varie proprietà Draw... ma a te in questo caso interesserebbe la DrawRectangle.

i Size del controllo r del Rectangle le gestirai naturalmente da codice a seconda le dimensioni.
Per sapere cosa l'utente vuole selezionare lo farai tramite l'evento MouseClick del controllo. E potrai decidere eventualmente anche di cambiare colore al Rectangle ad esempio da blu a giallo.

Puoi sbizzarrirti come vuoi
Vincenzo
Programmatore sbilenco

Mrk31 Profilo | Newbie

Grazie mille mi guarderò quella classe...altrimenti avevo pensato di utilizzareun DataGridView con molte colonne (rese "invisibili" togliendo i bordi) e colorare le colonne...che ne pensi sarebbe più complicato? anche perchè devo andare a gestire il resize dell'applicativo e con il DataGrid mi basta fare il resize dell'intero oggetto e non dovrei occuparmi delle righe e delle colonne...La classe che mi hai consogliato permette un resize altrettanto comodo?

ysdemarc Profilo | Expert

Credevo che volessi un'immagine che magari andava anche salvata..

a questo punto potresti utilizzare si le Label oppure meglio del datagrid un TableLayoutPanel con una Label a cella intera.

Connquest'ultimo puoi definire le righe e le colonne da visualizzare e la dimensione gliela dai in percentuale..poi ci penserà lui ad adattarsi alla schermata
Vincenzo
Programmatore sbilenco

Mrk31 Profilo | Newbie

In effetti mi sono spiegato male...l'utente dovrebbe riuscire ad interagire con il "calendario"

ysdemarc Profilo | Expert

Credo di aver capito, vorresti che graficamente l'utente possa aumentare o diminuire i tempi

Quindi ti servirebbe qualcosa come lo SplitContainer ma che abbia la possibilità di aggiungere più pannelli nello stesso livello..

Credo che non ci sia nel framework qualcosa così già pronto..
Potresti cercare di crearlo tu usando sia Splitter che Panel e poi magari pubblicarlo liberamente qui per un utilizzazione gratuita da parte delgi utenti del forum .

Forse qualcosa di utile potrai trovare qui: http://www.codeproject.com/Articles/3025/Collapsible-Splitter-control-in-C
Vincenzo
Programmatore sbilenco

willy_80 Profilo | Senior Member

Perchè non provi ad inserire una datagridview e colori le celle che ti interessano cambiandone il backcolor potresti così scriverci dentro del testo ottenere le celle colorate a piacere e se poi devi pure creare un immagine usi la classe graphics per disegnarla
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