Diagramma a Gantt

lunedì 29 settembre 2008 - 13.47

Harley.Net82 Profilo | Junior Member

Salve, ho realizzato un' applicazione che rappresenta i dati sotto forma di un diagramma a Gantt.
In pratica vado a rappresentare l' asse temporale su un pannello (ho modo di scegliere l' intervallo di giorni da visualizzare e la scala).
Poi in corrispondenza di ogni "impegno", vado ad instanziare una Label (larga quanto la durata dell' impegno) e la aggiungo al pannello.
Ovviamente, la proprietà Left della Label, varia a seconda dell' orario di Inizio che devo rappresentare.

Il mio pannello, ha una sorta di griglia, ovvero delle linee che io vado a disegnare in corrispondenza di ogni Ora, 1/2 Ora, ecc.
Tali linee sono disegnate tramite il metodo DrawLine (Graphics).

E' possibile far si che le Label siano semitrasparenti così da lasciar intravedere la griglia del pannello?

Io proprio non ci riesco, neanche se imposto il BackColor della Label a trasparente. Qualcuno sa dirmi perchè?

Brainkiller Profilo | Guru

>Il mio pannello, ha una sorta di griglia, ovvero delle linee
>che io vado a disegnare in corrispondenza di ogni Ora, 1/2 Ora,
>ecc.
>Tali linee sono disegnate tramite il metodo DrawLine (Graphics).

Ma queste linee le disegni sulla Form o su una PictureBox ? Le classiche linee orizzontali del Gantt quelle colorate come le disegni ? Io avevo fatto una cosa simile un tempo, mi ero creato un oggetto Graphics con un Bitmap e ci disegnavo sopra tutto l'occorrente quando era pronto lo ribaltavo sulla PictureBox ed ecco il mio Gantt visibile.

Senza dover istanziare oggetti come Label o quant'altro usavo semplicemente il metodo DrawString per andare a stmapare del testo sulla Bitmap.

Tu non fai così ?

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Harley.Net82 Profilo | Junior Member

Il suggerimento che mi hai dato è buono:
trasformare tutto in un' immagine.

Io al momento disegno direttamente sul pannello come nell' esempio:

Dim Gr as Graphics = Pannello.CreateGraphics

Facendo con il tuo metodo potrebbe nascere solo un problema, ma forse tu puoi aiutarmi.

In pratica io sono costretto a mettere delle Label perchè tali oggetti devo essere selezionabili, devono reagire ad alcuni eventi.

Quindi una volta instanziata la Label la aggiungo al contenitore padre in questo modo:

Pannello.Controls.Add(Label)

Con una PictureBox il discorso sarebbe analogo?

In ogni caso potresti postarmi il codice con la quale disegnavi (anche una sola linea) e poi ribaltavi su PictureBox?

Grazie

Brainkiller Profilo | Guru

>In pratica io sono costretto a mettere delle Label perchè tali
>oggetti devo essere selezionabili, devono reagire ad alcuni eventi.

Allora forse è meglio mantenere la Label se no dovresti salvare le coordinate in cui posizioni il testo nell'immagine e quando ci muovi sopra il mouse verificare in che punto si trova, insomma è più complicato.

>In ogni caso potresti postarmi il codice con la quale disegnavi
>(anche una sola linea) e poi ribaltavi su PictureBox?

Questo è un semplice esempio:

Bitmap bm = new Bitmap(300,300); Graphics g = Graphics.FromImage(bm); g.FillRectangle(new SolidBrush(Color.Red), 0, 0, 300, 300); pictureBox1.Image = bm;

Creo una bitmap, la coloro di rosso con il FillRectangle e la visualizzo su pictureBox1.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Harley.Net82 Profilo | Junior Member

Grazie, sei stato di grande aiuto.

Davide

Brainkiller Profilo | Guru

>Grazie, sei stato di grande aiuto.

Se la risposta ti è stata d'aiuto accettala con l'apposito bottone così il thread viene marcato come risolto e se qualcuno ci capita sa di poter fare affidamento.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5