public void DrawTranslated(Graphics g, uint id, float newLocX, float newLocY) { Matrix m = g.Transform; DesignInstance inst = instanceManager[id]; using (Matrix mr = inst.GetMatrix().SysMatrix()) { mr.Translate(newLocX - inst.Location.X, newLocY - inst.Location.Y, MatrixOrder.Append); mr.Multiply(m, MatrixOrder.Append); g.Transform = mr; inst.DrawOutlineIntoRaw(g, 0, 0); } g.Transform = m; }
public void DrawRotated(Graphics g, float angle, Vex.Point center) { Matrix m = g.Transform; foreach (uint id in list) { DesignInstance inst = instanceManager[id]; using (Matrix mr = inst.GetMatrix().SysMatrix()) { mr.RotateAt(angle, center.SysPointF(), MatrixOrder.Append); mr.Multiply(m, MatrixOrder.Append); g.Transform = mr; inst.DrawOutlineIntoRaw(g, 0, 0); } } g.Transform = m; }
public void DrawScaled(Graphics g, float scaleX, float scaleY, Vex.Point center) { Matrix m = g.Transform; scaleX = (Math.Abs(scaleX) < .01) ? .01f : scaleX; scaleY = (Math.Abs(scaleY) < .01) ? .01f : scaleY; Matrix tm = TransformMatrix.Clone(); tm.Translate(-TransformMatrix.OffsetX, -TransformMatrix.OffsetY, MatrixOrder.Append); Matrix itm = tm.Clone(); itm.Invert(); foreach (uint id in list) { DesignInstance inst = instanceManager[id]; using (Matrix ms = inst.GetMatrix().SysMatrix()) { ms.Translate(-center.X, -center.Y, MatrixOrder.Append); ms.Multiply(itm, MatrixOrder.Append); ms.Scale(scaleX, scaleY, MatrixOrder.Append); ms.Multiply(tm, MatrixOrder.Append); ms.Translate(center.X, center.Y, MatrixOrder.Append); ms.Multiply(m, MatrixOrder.Append); g.Transform = ms; inst.DrawOutlineIntoRaw(g, 0, 0); } } tm.Dispose(); itm.Dispose(); g.Transform = m; }