我正在创建一个简单的DXF生成器(由CNC机器使用),它仅使用字母,我在使用 PathGradientBrush 和 GraphicsPath 类时遇到问题。我正在使用 GraphicsPath 绘制一个字母的轮廓,之后我需要填充渐变的相应 GraphicsPath ,类似于此:
如您所见,渐变需要从边缘开始,然后在中心过渡到白色。 这是我目前使用的代码:
private void Form1_Paint(object sender, PaintEventArgs e) {
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
using(GraphicsPath Path = new GraphicsPath()) {
Path.AddString("I", Font.FontFamily, (int) FontStyle.Regular, 250f, Point.Empty, StringFormat.GenericTypographic);
using(Pen OutlinePen = new Pen(Color.Black, 1f)) {
e.Graphics.DrawPath(OutlinePen, Path);
using(PathGradientBrush FillBrush = new PathGradientBrush(Path)) {
FillBrush.SurroundColors = new Color[] {
Color.FromArgb(0, 0, 0),
Color.FromArgb(51, 51, 51),
Color.FromArgb(102, 102, 102),
Color.FromArgb(173, 173, 173)
};
FillBrush.CenterColor = Color.FromArgb(255, 255, 255);
e.Graphics.FillPath(FillBrush, Path);
}
}
}
}
另外,我尝试过使用 FocusScales ,但也没有成功。 在示例中显示了字母“I”,但这需要与所有字母一起使用。 任何帮助都非常感谢。
P.S。字母“N”作为参考,对不好的绘图感到抱歉,但这只是一个快速而肮脏的例子。这个字母需要填充5色渐变(从边缘的黑色到中间的白色),但要考虑字母宽度。如果有人感兴趣,则需要模拟CNC机床刀具路径的深度尺寸。白色 - 中间部分具有最大深度。