Ciao,
devi misurare la stringa e spostare il valore di "X" di conseguenza.
var pointX = 550;
var size = e.Graphics.MeasureString(TextBox1.Text, new Font("Arial", 20, FontStyle.Italic), pointX,null)
var x =pointX-size.Width; // allineato a destra rispetto a pointX
x =pointX; // allineato a sinistra rispetto a pointX (non fai nulla in pratica)
x =pointX-(size.Width/2).; // allineato al centro rispetto a pointX
e.Graphics.DrawString(TextBox1.Text, new Font("Arial", 20, FontStyle.Italic), Brushes.Black, x: x, y: 180);
Ovviamente parliamo sempre rispetto al punto che fornisci tu, quindi nel tuo caso è 550 per tutte le righe tranne la prima. Chiaramente per la prima riga il procedimento è uguale, ma il punto di partenza va ricalcolato con quei valori (var pointX=190).
0|----------------------------------------------------------550---------------------------------------------------------|1100
0|---------------------------------------------------aaaaaaaaaa---------------------------------------------------|1100 //allineamento al centro rispetto a 550
0|-----------------------------------------aaaaaaaaaa-------------------------------------------------------------|1100 //allineamento a destra finendo a 550
0|------------------------------------------------------------aaaaaaaaaa------------------------------------------|1100 //allineamento a sinistra a partire da 550
Chiaramente se il tuo intento è allineare a destra o sinistra o centro in base alla grandezza del rettangolo devi usare la misura della larghezza del rettangolo, quindi pointX diventa 0 se devi allineare a sinistra, uguale alla larghezza del rettangolo (totalità di pictureBox o immagine) meno la larghezza della stringa se devi allineare a destra, e ovviamente se devi centrare diventa larghezza del rettangolo / 2 meno la metà della larghezza della stringa.
In questo caso il codice diventa :
var pointX = this.pictureBox.Width.;//1100
var size = e.Graphics.MeasureString(TextBox1.Text, new Font("Arial", 20, FontStyle.Italic), pointX,null)
var x =pointX-size.Width; // allineato a destra rispetto al rettangolo (pictureBox in questo esempio)
x =0; // allineato a sinistra rispetto al rettangolo (pictureBox in questo esempio)
x =(pointX/2)-(size.Width/2).; // allineato al centro rispetto al rettangolo (pictureBox in questo esempio)
e.Graphics.DrawString(TextBox1.Text, new Font("Arial", 20, FontStyle.Italic), Brushes.Black, x: x, y: 180);
In questo caso l'allineamento sarà questo:
0|----------------------------------------------------------550---------------------------------------------------------|1100
0|---------------------------------------------------aaaaaaaaaa---------------------------------------------------|1100 //allineamento al centro
0|------------------------------------------------------------------------------------------------------aaaaaaaaaa|1100 //allineamento a destra
0|aaaaaaaaaa------------------------------------------------------------------------------------------------------|1100 //allineamento a sinistra
Modificato da u235 il 25 agosto 2022 20:17 -