Principale utente con più risposte
Scrivere in grassetto su un grafico

Domanda
-
Chiedo scusa a tutti per l'inosservanza delle regole del Forum , Mi impegnerò per migliorare .
Sto costruendo un grafico che contiene un diagramma cartesiano con istogrammi seguito da numerose righe
contenenti dati alfanumerici formattati così da poter formare colonne .
Su mia richiesta , per velocizzare l'esecuzione , ho ricevuto il suggerimento di NON scrivere le singole stringhe-dato
sul grafico stile "puzzle" ma di comporre le righe intere e quindi con DrawString( .. ) inserirle nel grafico .
In effetti si ottiene una sensibile riduzione nel tempo di esecuzione .
Sorge però un problema nel momento in cui volessi evidenziare in grassetto (o in altro modo) una delle colonne
che risultano dalla successione delle righe ( i dati vengono formattati apposta )
dovrei poter evidenziare uno spazio ( in questo case verticale : largo x ed alto y ) in qualche modo .
Suggerimenti ??
Risposte
-
Ciao Vittorio,
secondo me ti conviene semplicemente "cancellare" il contenuto nel punto preciso e riscrivere quella parte quando necessario.
Per cancellare calcoli la "cella" e disegni un rettangolo (FillRectangle) sopra l'area, dopo riscrivi la stringa contenuta in quell'area con font bold.
Ora supponiamo che la tua immagine è di 300x300, quindi diciamo che è divisa in tre righe (quindi ogni riga alta 100) ed ogni riga è divisa in 3 colonne (quindi larga 100), nel momento in cui voglio "evidenziare" di rosso la cella centrale faccio:
g.FillRectangle(Brushes.Red, 100, 100, 100, 100);
In questo modo il riquadro centrale diventa rosso, dopo devo riscrivere la stringa in grassetto:
g.DrawString("Ciao", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(120, 140));
A questo punto mi ritrovo il riquadro centrale rosso con una scritta nero in grassetto.
- Modificato U 235 lunedì 12 settembre 2022 19:52
- Contrassegnato come risposta vittorio 50 martedì 13 settembre 2022 07:52
Tutte le risposte
-
Ciao Vittorio,
secondo me ti conviene semplicemente "cancellare" il contenuto nel punto preciso e riscrivere quella parte quando necessario.
Per cancellare calcoli la "cella" e disegni un rettangolo (FillRectangle) sopra l'area, dopo riscrivi la stringa contenuta in quell'area con font bold.
Ora supponiamo che la tua immagine è di 300x300, quindi diciamo che è divisa in tre righe (quindi ogni riga alta 100) ed ogni riga è divisa in 3 colonne (quindi larga 100), nel momento in cui voglio "evidenziare" di rosso la cella centrale faccio:
g.FillRectangle(Brushes.Red, 100, 100, 100, 100);
In questo modo il riquadro centrale diventa rosso, dopo devo riscrivere la stringa in grassetto:
g.DrawString("Ciao", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(120, 140));
A questo punto mi ritrovo il riquadro centrale rosso con una scritta nero in grassetto.
- Modificato U 235 lunedì 12 settembre 2022 19:52
- Contrassegnato come risposta vittorio 50 martedì 13 settembre 2022 07:52
-
Grazie U 235 ,
si certo , mi sembra però un pò lento : dovrei ripeterlo per ogni riga in corrispondenza della stringa appartenente alla colonna voluta .
Potrei forse anche segnalare la colonna semplicemente tracciando in verticale una riga nera (magari un pò spessa) .
Speravo si potesse , facilmente , cambiare un pò il colore dello sfondo in corrispondenza dell' intera colonna , senza perdere il contenuto , già scritto , delle righe . O forse farlo prima dell' inserimento delle righe .
-