public void Draw(Graphics graphics, Point position, Size size, float angle, DrawUtil.AlphaMode alphaMode) { //Do transformations for position and rotation graphics.TranslateTransform(position.X, position.Y); graphics.RotateTransform(angle); graphics.TranslateTransform(-Origin.X, -Origin.Y); //Draw the actual entity if (ImageDefinition.DrawMode == EntityImageDefinition.DrawModes.Rectangle) { DrawUtil.EntityRectBrush.Color = Color.FromArgb(DrawUtil.AlphaInts[(int)alphaMode], ImageDefinition.RectColor); graphics.FillRectangle(DrawUtil.EntityRectBrush, new Rectangle(0, 0, size.Width, size.Height)); } else if (ImageDefinition.Tiled) { Rectangle drawTo = Rectangle.Empty; for (drawTo.X = 0; drawTo.X < size.Width; drawTo.X += bitmap.Width) { drawTo.Width = Math.Min(bitmap.Width, size.Width - drawTo.X); for (drawTo.Y = 0; drawTo.Y < size.Height; drawTo.Y += bitmap.Height) { drawTo.Height = Math.Min(bitmap.Height, size.Height - drawTo.Y); graphics.DrawImage(bitmap, drawTo, 0, 0, drawTo.Width, drawTo.Height, GraphicsUnit.Pixel, DrawUtil.AlphaAttributes[(int)alphaMode]); } } } else { graphics.DrawImage(bitmap, new Rectangle(0, 0, size.Width, size.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, DrawUtil.AlphaAttributes[(int)alphaMode]); } //Undo the transformations graphics.TranslateTransform(Origin.X, Origin.Y); graphics.RotateTransform(-angle); graphics.TranslateTransform(-position.X, -position.Y); }
public void Draw(Graphics graphics, Point position, float angle, DrawUtil.AlphaMode alphaMode) { Draw(graphics, position, Size, angle, alphaMode); }
public void Draw(Graphics graphics, bool current, bool fullAlpha) { Definition.Draw(graphics, Position, Size, Angle, fullAlpha ? DrawUtil.AlphaMode.Full : DrawUtil.AlphaMode.Half); //Selection box if (current && Ogmo.EntitySelectionWindow.IsSelected(this)) { graphics.DrawSelectionRectangle(Bounds); } //Draw Nodes if (Nodes != null) { //Node ghost images if (Definition.NodesDefinition.Ghost) { DrawUtil.AlphaMode alphaMode = fullAlpha ? DrawUtil.AlphaMode.Half : DrawUtil.AlphaMode.Quarter; foreach (var p in Nodes) { Definition.Draw(graphics, p, Size, Angle, alphaMode); } } switch (Definition.NodesDefinition.DrawMode) { case EntityNodesDefinition.PathMode.None: foreach (var p in Nodes) { graphics.DrawNode(p); } break; case EntityNodesDefinition.PathMode.Path: if (Nodes.Count > 0) { graphics.DrawLine(DrawUtil.NodePathPen, Position, Nodes[0]); graphics.DrawNode(Nodes[0]); } for (int i = 1; i < Nodes.Count; i++) { graphics.DrawLine(DrawUtil.NodePathPen, Nodes[i - 1], Nodes[i]); graphics.DrawNode(Nodes[i]); } break; case EntityNodesDefinition.PathMode.Circuit: if (Nodes.Count > 0) { graphics.DrawLine(DrawUtil.NodePathPen, Position, Nodes[0]); graphics.DrawNode(Nodes[0]); } for (int i = 1; i < Nodes.Count; i++) { graphics.DrawLine(DrawUtil.NodePathPen, Nodes[i - 1], Nodes[i]); graphics.DrawNode(Nodes[i]); } if (Nodes.Count > 1) { graphics.DrawLine(DrawUtil.NodePathPen, Nodes[Nodes.Count - 1], Position); } break; case EntityNodesDefinition.PathMode.Fan: foreach (var p in Nodes) { graphics.DrawLine(DrawUtil.NodePathPen, Position, p); graphics.DrawNode(p); } break; } } }