Я пытаюсь нарисовать каркасный цилиндр, используя ILNumerics.
var CylinderShape = new ILCylinder();
CylinderShape.Top.Fill.Color = c;
CylinderShape.Top.Border.Width = 3;
CylinderShape.Top.Border.Color = Color.Black;
CylinderShape.Hull.Color = c;
CylinderShape.Bottom.Fill.Color = c;
CylinderShape.Bottom.Border.Width = 3;
CylinderShape.Bottom.Border.Color = Color.Black;
но CylinderShape.Hull не имеют свойства border. я пытаюсь добавить RectangleWireframe в сцену, чтобы решить мою проблему:
var WireframeShape = Shapes.RectangleWireframe;
WireframeShape.Antialiasing = true;
WireframeShape.Width = 3;
WireframeShape.DashStyle = DashStyle.Solid;
но созданная форма не хороша.
Как я могу заменить RectangleWireframe на линию для рисования каркасного цилиндра?
Полный источник:
private static ILGroup Cylinder(double x, double y, double z, double bw, double bh, Color c)
{
ILGroup returnValue = new ILGroup();
var Wireframe = new ILGroup();
var WireframeShape = Shapes.RectangleWireframe;
WireframeShape.Antialiasing = true;
WireframeShape.Width = 3;
WireframeShape.DashStyle = DashStyle.Solid;
Wireframe.Add(WireframeShape);
ILGroup Cylinder = new ILGroup();
var CylinderShape = new ILCylinder();
CylinderShape.Top.Fill.Color = c;
CylinderShape.Top.Border.Width = 3;
CylinderShape.Top.Border.Color = Color.Black;
CylinderShape.Hull.Color = c;
CylinderShape.Bottom.Fill.Color = c;
CylinderShape.Bottom.Border.Width = 3;
CylinderShape.Bottom.Border.Color = Color.Black;
Cylinder.Add(CylinderShape);
Cylinder.Rotate(new Vector3(1, 0, 0), Math.PI / 2);
Cylinder.Scale(bw / 2, bh, bw / 2);
Cylinder.Translate(bw / 2, 0, bw / 2);
Wireframe.Scale(bw, bh*0.95, bw);
Wireframe.Translate(-bw / 2, 0, bw / 2);
Wireframe.Rotate(0, 1, 0, -90 * Math.PI / 360);
returnValue.Add(Cylinder);
returnValue.Add(Wireframe);
returnValue.Translate(x, y, z);
return returnValue;
}
результат:
Созданное изображение