public PdfRectangle Transform(System.Drawing.Drawing2D.Matrix transform) { System.Drawing.PointF[] points = {new PointF(llx, lly), new PointF(urx, ury)}; float[] pts = { points[0].X, points[0].Y, points[1].X, points[1].Y }; transform.TransformPoints(points); if(pts[0] > pts[2]) { points[0].X = pts[2]; points[1].X = pts[0]; } if(pts[1] > pts[3]) { points[0].Y = pts[3]; points[1].Y = pts[1]; } return new PdfRectangle(points[0].X, points[0].Y, points[1].X, points[1].Y); }
private static SharpMap.Data.FeatureDataTable TransformedFeatureDataTable( System.Drawing.Drawing2D.Matrix matrix, SharpMap.Data.FeatureDataTable fdt) { SharpMap.Data.FeatureDataTable fdtClone = new SharpMap.Data.FeatureDataTable(fdt); fdtClone.Clear(); foreach (SharpMap.Data.FeatureDataRow row in fdt) { SharpMap.Data.FeatureDataRow newRow = fdtClone.NewRow(); for (System.Int32 i = 0; i < fdtClone.Columns.Count; i++) newRow[i] = row[i]; SharpMap.Geometries.Point smpt = (SharpMap.Geometries.Point)row.Geometry; System.Drawing.PointF[] pts = new System.Drawing.PointF[] { new System.Drawing.PointF((float)smpt.X, (float)smpt.Y) }; matrix.TransformPoints(pts); newRow.Geometry = new SharpMap.Geometries.Point(pts[0].X, pts[0].Y); fdtClone.AddRow(newRow); } return fdtClone; }
public BoundingBox Transform(System.Drawing.Drawing2D.Matrix matrix) { System.Drawing.PointF[] points = new System.Drawing.PointF[2]; points[0] = new System.Drawing.PointF((float)XMin, (float)YMin); points[1] = new System.Drawing.PointF((float)XMax, (float)YMax); matrix.TransformPoints(points); return new BoundingBox(points[0].X, points[1].X, points[0].Y, points[1].Y); }
/// <summary> /// Renders the chart /// </summary> /// <param name="graphics">Graphics object to output the drawing</param> /// <param name="width">Specifies the Width of the chart</param> /// <param name="height">Specifies the height of the chart</param> public override void Render( System.Drawing.Graphics graphics, int width, int height) { ChartEngine engine = this.Engine; float scaleX = engine.ScaleX, scaleY = engine.ScaleY; Pen pen = this.Line.GetPen(graphics); Brush brush = this.Fill.GetBrush(graphics); float xStart=0, xWidth; int xCount = 0, xPosFinal=0; if (engine.Charts.Count > 1) { foreach (Chart c in engine.Charts) { if (c.Equals(this)) xPosFinal = xCount; if (c as MapColumnChart != null) xCount ++; } xWidth = ((scaleX-1)/xCount) ; xStart = xWidth * xPosFinal + 1; } else { xStart=1; xWidth=scaleX; } float y; float yHeight; float x=0; foreach (ChartPoint p in this.Data) { if (p.YValue * scaleY < 0) { y=(p.YValue * scaleY); yHeight=-(p.YValue * scaleY); } else { y=0; yHeight=(p.YValue * scaleY); } Rectangle rect = new Rectangle( (int)((float)(x * scaleX) + xStart) , (int)y, (int)xWidth, (int)yHeight); Point []points = new Point[]{ rect.Location }; graphics.TransformPoints( System.Drawing.Drawing2D.CoordinateSpace.Page, System.Drawing.Drawing2D.CoordinateSpace.World, points); if (this.rects !=null) this.rects.Add( new Rectangle( points[0], new Size((int)xWidth, (int)yHeight)) ); graphics.FillRectangle( brush, rect); graphics.DrawRectangle( pen, rect); x++; } }
public override bool OnClick(System.Windows.Forms.Control container, System.Windows.Forms.MouseEventArgs evnt, System.Drawing.Drawing2D.Matrix viewTransform) { base.OnClick(container, evnt, viewTransform); if (evnt.Button == System.Windows.Forms.MouseButtons.Left) { var basePts = new PointF[] { new PointF(Node.bounds.Left + GraphConstants.HorizontalSpacing, bounds.Top), new PointF(Node.bounds.Right + GraphConstants.HorizontalSpacing - GraphConstants.NodeExtraWidth, bounds.Bottom) }; viewTransform.TransformPoints(basePts); var dropDownCtrl = new ListBox(); dropDownCtrl.BorderStyle = BorderStyle.None; dropDownCtrl.Margin = new Padding(0); dropDownCtrl.Padding = new Padding(0); dropDownCtrl.DrawMode = DrawMode.OwnerDrawVariable; dropDownCtrl.DrawItem += (object sender, DrawItemEventArgs e) => { var lb = sender as ListBox; var item = lb.Items[e.Index]; bool selectedState = e.State != DrawItemState.None; // We have to draw the background every item, because the control // background isn't refreshed on state changes e.Graphics.FillRectangle(selectedState ? Brushes.Gray : BackgroundBrush, e.Bounds); e.Graphics.DrawString( item.ToString(), SystemFonts.MenuFont, selectedState ? Brushes.Black : Brushes.White, e.Bounds, GraphConstants.LeftTextStringFormat); }; dropDownCtrl.MeasureItem += (object sender, MeasureItemEventArgs e) => { var lb = sender as ListBox; var item = lb.Items[e.Index]; var size = new Size(GraphConstants.MinimumItemWidth, GraphConstants.MinimumItemHeight); var textSize = e.Graphics.MeasureString( item.ToString(), SystemFonts.MenuFont, size, GraphConstants.LeftMeasureTextStringFormat); e.ItemWidth = (int)textSize.Width; e.ItemHeight = (int)textSize.Height; }; dropDownCtrl.BackColor = Color.FromArgb(96, 96, 96); dropDownCtrl.Items.AddRange(Items); dropDownCtrl.SelectedIndex = SelectedIndex; var toolDrop = new ToolStripDropDown(); var toolHost = new ToolStripControlHost(dropDownCtrl); toolHost.Margin = new Padding(0); toolDrop.Padding = new Padding(0); toolDrop.Items.Add(toolHost); // Unfortunately the AutoSize functionality for toolHost just doesn't // work with an owner draw list box... Perhaps MeasureItem isn't called // until the list box is first drawn -- but that is after the tool host // has done it's auto size toolHost.AutoSize = false; toolHost.Size = new Size((int)(basePts[1].X - basePts[0].X), dropDownCtrl.PreferredHeight + 20); dropDownCtrl.SelectedIndexChanged += (object sender, System.EventArgs e) => { var lb = sender as ListBox; if (lb != null) SelectedIndex = lb.SelectedIndex; toolDrop.Close(); }; toolDrop.Show(container, new Point((int)basePts[0].X, (int)basePts[1].Y + 4)); return true; } return false; }