public static void Draw(Packable packable, PictureBox pictureBox) { // get horizontal angle double angle = 45; // instantiate graphics Graphics3DImage graphics = new Graphics3DImage(pictureBox.Size); graphics.CameraPosition = new Vector3D( Math.Cos(angle * Math.PI / 180.0) * Math.Sqrt(2.0) * 10000.0 , Math.Sin(angle * Math.PI / 180.0) * Math.Sqrt(2.0) * 10000.0 , 10000.0); graphics.Target = Vector3D.Zero; graphics.SetViewport(-500.0f, -500.0f, 500.0f, 500.0f); // ### draw : begin ############################## if (packable is PackProperties) { Box box = new Pack(0, packable as PackProperties); graphics.AddBox(box); } else if (packable is BProperties) { Box box = new Box(0, packable as PackableBrick); graphics.AddBox(box); } else if (packable is CylinderProperties) { graphics.AddCylinder(new Cylinder(0, packable as CylinderProperties)); } // ### draw : end ################################# graphics.Flush(); // set to picture box pictureBox.Image = graphics.Bitmap; }
private void AppendCylinderElement(CylinderProperties cylProperties, XmlElement elemAnalysis, XmlDocument xmlDoc) { string ns = xmlDoc.DocumentElement.NamespaceURI; // get CylinderProperties XmlElement elemCylinder = xmlDoc.CreateElement("cylinder", ns); elemAnalysis.AppendChild(elemCylinder); // name XmlElement elemName = xmlDoc.CreateElement("name", ns); elemName.InnerText = cylProperties.Name; elemCylinder.AppendChild(elemName); // description XmlElement elemDescription = xmlDoc.CreateElement("description", ns); elemDescription.InnerText = cylProperties.Description; elemCylinder.AppendChild(elemDescription); AppendElementValue(xmlDoc, elemCylinder, "radius", UnitsManager.UnitType.UT_LENGTH, cylProperties.RadiusOuter); AppendElementValue(xmlDoc, elemCylinder, "width", UnitsManager.UnitType.UT_LENGTH, cylProperties.Height); AppendElementValue(xmlDoc, elemCylinder, "height", UnitsManager.UnitType.UT_MASS, cylProperties.Weight); // --- build image Graphics3DImage graphics = new Graphics3DImage(new Size(ImageSizeDetail, ImageSizeDetail)); graphics.CameraPosition = Graphics3D.Corner_0; graphics.Target = Vector3D.Zero; Cylinder cyl = new Cylinder(0, cylProperties); graphics.AddCylinder(cyl); DimensionCube dc = new DimensionCube(cyl.DiameterOuter, cyl.DiameterOuter, cyl.Height); dc.FontSize = 6.0f; graphics.AddDimensions(dc); graphics.Flush(); // --- // view_case_iso XmlElement elemImage = xmlDoc.CreateElement("view_cylinder_iso", ns); TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap)); elemImage.InnerText = Convert.ToBase64String((byte[])converter.ConvertTo(graphics.Bitmap, typeof(byte[]))); XmlAttribute styleAttribute = xmlDoc.CreateAttribute("style"); styleAttribute.Value = string.Format("width:{0}pt;height:{1}pt", graphics.Bitmap.Width / 4, graphics.Bitmap.Height / 4); elemImage.Attributes.Append(styleAttribute); elemCylinder.AppendChild(elemImage); // save image SaveImageAs(graphics.Bitmap, "view_cylinder_iso.png"); }