我正在用C#编程,我需要一种在2D中获得字体为点的方法。我基本上希望字体转换成一个网格,以便我可以渲染它的2D/3D。有什么办法吗?还是最好只是下载网格或其他东西,然后将它们加载到我的程序中。
发布于 2017-04-07 01:32:31
在winforms
中,您可以使用GraphicsPath
从System.Drawing.Drawing2D
到
PathPoints
和PathTypes
数据Flattening
之后,访问PathPoints
数组的路径,该数组现在由线段组成。使用其中一个GraphicsPath.AddString
方法创建路径..!
您可能还想查看GraphicsPathIterator
类,它..
提供在GraphicsPath中遍历子路径并测试每个子路径中包含的形状类型的能力。
下面是绘制扁平段点的示例:
Bitmap bmp = new Bitmap(400, 400);
GraphicsPath gp = new GraphicsPath();
using (Graphics g = Graphics.FromImage(bmp))
using (Font f = new Font("Tahoma", 40f))
{
g.ScaleTransform(4,4);
gp.AddString("Y?", f.FontFamily, 0, 40f, new Point(0, 0), StringFormat.GenericDefault);
g.DrawPath(Pens.Gray, gp);
gp.Flatten(new Matrix(), 0.2f); // <<== *
g.DrawPath(Pens.DarkSlateBlue, gp);
for (int i = 0; i < gp.PathPoints.Length; i++)
{
PointF p = gp.PathPoints[i];
g.FillEllipse(Brushes.DarkOrange, p.X-1, p.Y - 1, 2, 2);
}
pictureBox1.Image = bmp;
}
注意第二个Flatten
参数,它允许您控制有多紧,即曲线被线逼近的距离。越小,越小,值越多, 2d点就越多。
要使用无人值守的路径,需要将PathPoints
与各自的PathTypes
组合起来;这与创建Bezier曲线基本相同:每个点之间有两个控制点。类型告诉您图形从哪里开始/结束,从哪里开始或从哪里开始。
发布于 2017-04-06 23:59:51
您可以使用GlyphTypeface.GetGlyphOutline
方法返回组成字母曲线的字形。注意,这是WPF的一部分。
MSDN:
返回一个几何值,描述字体中单个字形的路径。
我怀疑它是在调用本机函数GetGlyphOutline
。
...which您可以从WinForms/XNA应用程序中进行p调用。
https://stackoverflow.com/questions/43267557
复制相似问题