@Matthias font colpo singolo si definiscono per l'area riempita del carattere. I caratteri TTF (contorno) definiscono ciascun carattere in base al tratto che circonda l'area riempita. Quindi, sono necessariamente formano una forma chiusa. In altre parole, non è possibile avere un carattere di contorno "true single stroke", perché i caratteri a tratto singolo hanno solo un'area riempita. .NET Framework supporta solo i caratteri TTF.
Fortunatamente, ci sono alcuni caratteri che emulano il comportamento a corsa singola chiudendo i tratti del contorno su se stessi. Principalmente, sono utilizzati dal software di tracciatura CNC. Ecco uno link nel file zip contenente gli stessi caratteri che @Simon Mourier ha suggerito di utilizzare.
Ho sperimentato con il primo e in effetti non ho potuto vedere un percorso separato per le aree chiuse. Ho scritto un codice che rende i tratti di un carattere normale vicini a se stessi, ma le aree curve scompaiono in alcuni punti. Qualunque algoritmo interno .NET utilizzi per provare a creare un percorso 1px da una struttura schiacciata non funziona altrettanto bene come usare un font ben progettato. Quindi, questo è buono come quello che otterrà usando .NET.
È possibile utilizzare questo codice per vedere cosa produce ogni font dopo averli installati. Oppure, credo che potresti semplicemente provarli nel tuo software :) Ad ogni modo, spero che questo sia utile per te.
Questa è l'uscita di Graphics.DrawPath
, NON Graphics.FillPath
.
private void button1_Click(object sender, EventArgs e) {
DrawText("single stroke ttf engraving fonts");
}
private void DrawText(string text) {
using (Graphics g = panel.CreateGraphics())
using (Font font = new System.Drawing.Font("1CamBam_Stick_1", 50, FontStyle.Regular))
using (GraphicsPath gp = new GraphicsPath())
using (StringFormat sf = new StringFormat()) {
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
gp.AddString(text, font.FontFamily, (int)font.Style, font.Size, panel.ClientRectangle, sf);
g.Clear(Color.Black);
g.DrawPath(Pens.Red, gp);
}
}
Inoltre, ecco un articolo molto legati da leggere se si pensa di fare un sacco di questo. http://tipsandtricks.rolanddga.com/software/how-to-generate-single-line-fonts-for-use-with-dr-engrave/
per un progetto semplice, vorrei prendere le coordinate 2D per 1 pixel di larghezza e utilizzare un algoritmo A * per trovare la "strada" attorno all'oggetto. – Lucian
Vedere anche [here] (http://forums.adobe.com/message/1277079), ma questo è per le app Adobe e CAD. L'unica soluzione che ho trovato finora sono i font TrueType a linea singola che devono essere installati sul sistema. – Matthias
Puoi essere più specifico? dici "un unico percorso simile" quindi mostra un'immagine con due linee al suo interno. Non è chiaro cosa stai cercando di realizzare. –