none
Scrivere in grassetto su un grafico RRS feed

  • 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 ??

    lunedì 12 settembre 2022 16:20

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
    lunedì 12 settembre 2022 19:51

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
    lunedì 12 settembre 2022 19:51
  • 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 .

    martedì 13 settembre 2022 08:03
  • Ciao Vittorio,

    purtroppo sono questi i limiti di usare un immagine.

    martedì 13 settembre 2022 13:58