单笔画字体通过字体的填充区域定义自己。TTF(轮廓)字体通过填充区域周围的笔画定义每个字符。因此,它们必然形成闭合形状。换句话说,不可能具有“真正的单笔画”轮廓字体,因为单笔画字体仅具有填充区域。.NET Framework仅支持TTF字体。
幸运的是,有些字体通过关闭轮廓笔划本身来模仿单笔划行为。通常,它们由CNC绘图软件使用。这是指向 zip文件的链接,其中包含@Simon Mourier建议使用的相同字体。
我尝试了第一个,确实看不到封闭区域的单独路径。我确实写了一些代码,使常规字体的笔触彼此接近,但是弯曲的区域在某些地方消失了。.NET使用哪种内部算法尝试从压缩的轮廓创建1px路径,都不能像使用设计良好的字体那样工作。因此,这与使用.NET一样好。
您可以使用此代码查看每种字体在安装后产生的效果。或者,我想您可以在您的软件中尝试一下:)不管怎样,我希望这对您有用。
这是Graphics.DrawPathNOT 的输出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);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您打算做很多这样的事情,这是一篇很相关的文章。 http://tipsandtricks.rolanddga.com/software/how-to-generate-single-line-fonts-for-use-with-dr-engrave/
| 归档时间: |
|
| 查看次数: |
5277 次 |
| 最近记录: |