public IDrawing CreateObject(string c) { IDrawing drawing = null; if (!Enum.TryParse(c, out CommandEnum command)) { return(drawing); } else { if (command == CommandEnum.C) { drawing = new CreateCanvas(); } else if (command == CommandEnum.L) { drawing = new CreateNewLine(); } else if (command == CommandEnum.R) { drawing = new CreateRectangle(); } else if (command == CommandEnum.B) { drawing = new FillArea(); } } return(drawing); }
/// <summary> /// create xls /// using NPOI /// </summary> /// <param name="svgDocs"></param> /// <param name="stream"></param> public static void CreateExcelStreamBySvgs(List <SvgDocument> svgDocs, Stream stream) { using (stream) { IWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); IDrawing patriarch = sheet.CreateDrawingPatriarch(); HSSFClientAnchor anchor; IPicture pic; IRow row = null; for (int i = 0; i < svgDocs.Count; i++) { using (MemoryStream ms = new MemoryStream()) { using (System.Drawing.Bitmap image = svgDocs[i].Draw()) { image.Save(ms, ImageFormat.Bmp); ms.Seek(0, SeekOrigin.Begin); int index = workbook.AddPicture(ms.ToArray(), PictureType.JPEG); row = sheet.CreateRow(i); row.HeightInPoints = convertPixelToPoints(image.Height) + 10; anchor = new HSSFClientAnchor(0, 0, 0, 0, 0, i, 0, i); pic = patriarch.CreatePicture(anchor, index); pic.Resize(); } } } workbook.Write(stream); } }
/// <summary> /// Draws the view /// </summary> /// <param name="drawing">drawing wrapper</param> /// <param name="options">drawing options</param> /// <param name="margin">drawing margin</param> public virtual void Draw(IDrawing drawing, IDrawOptions options, IMargin margin) { if (drawing == null || margin == null) { throw new InvalidArgumentException("parameter is null"); } if (!(options is GridDrawOptions)) { throw new InvalidArgumentException("options is not compatible"); } var state = ((GridDrawOptions)options).State; var canvasSize = options.CanvasSize; // Step 1 - Measure all texts and calc offsets MeashureLabelSizes(drawing, margin, state, canvasSize, out SizeF strX, out SizeF strY, out double stepDataY); // Step 2 - Draw vertical lines DrawVerticalLines(drawing, margin, state, canvasSize, strX, out double stepDataX); // Step 3 - Draw horizontal lines DrawHorizontalLines(drawing, margin, state, canvasSize, ref strY, ref stepDataY); // Step 4 - Draw axis X and Y DrawAxis(drawing, margin, state, canvasSize, strX, strY, stepDataY, stepDataX); this.scaleService.SetStepX(stepDataX); this.scaleService.SetStepY(stepDataY); }
static void Main(string[] args) { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("PictureSheet"); IDrawing patriarch = sheet1.CreateDrawingPatriarch(); //create the anchor XSSFClientAnchor anchor = new XSSFClientAnchor(500, 200, 0, 0, 2, 2, 4, 7); anchor.AnchorType = AnchorType.MoveDontResize; //load the picture and get the picture index in the workbook //first picture int imageId = LoadImage("../../image/HumpbackWhale.jpg", workbook); XSSFPicture picture = (XSSFPicture)patriarch.CreatePicture(anchor, imageId); //Reset the image to the original size. //picture.Resize(); //Note: Resize will reset client anchor you set. picture.LineStyle = LineStyle.DashDotGel; //second picture int imageId2 = LoadImage("../../image/HumpbackWhale.jpg", workbook); XSSFClientAnchor anchor2 = new XSSFClientAnchor(500, 200, 0, 0, 5, 10, 7, 15); XSSFPicture picture2 = (XSSFPicture)patriarch.CreatePicture(anchor2, imageId2); picture.LineStyle = LineStyle.DashDotGel; FileStream sw = File.Create("test.xlsx"); workbook.Write(sw); sw.Close(); }
private void DrawHorizontalLine(IGridState state, IDrawing drawing, Structs.Size canvasSize, IMargin margin, ref SizeF strY, double valueData, double stepData, bool calcWidth, ref double maxTextSize, StringAlignment align, ref int lastTextPos) { double y = this.scaleService.ToScreenY(valueData); if (y >= 0 && y <= canvasSize.Height - margin.Bottom - margin.Top) { if (calcWidth) { var strValue = state.ItemFormatter.ToString(Axis.Y, new DataItem(0, valueData), stepData); var strSize = drawing.MeasureText(strValue); maxTextSize = maxTextSize < strSize.Width ? strSize.Width : maxTextSize; strY.Height = strSize.Height; } else { double lineYPos = canvasSize.Height - margin.Bottom - y; // Invert graphic var color = valueData != 0 ? state.GridColor : state.AxeColor; drawing.Line(color, margin.Left, lineYPos, canvasSize.Width - margin.Right, lineYPos); if (CalcAndCheckLabelRectY(state, canvasSize, margin, ref strY, valueData, align, lineYPos, out Rectangle rect, out bool borderValue)) { var strValue = state.ItemFormatter.ToString(Axis.Y, new DataItem(0, valueData), stepData); drawing.Text(state.TextYColor, rect, strValue, StringAlignment.Far, align); lastTextPos = rect.Top; } } } }
private void DrawHorizontalLines(IGridState state, IDrawing drawing, Structs.Size canvasSize, IMargin margin, ref SizeF strY, ref double stepDataAbs, bool fromZero, bool back, bool calcWidth) { if (stepDataAbs == 0) { stepDataAbs = ToNearRoundStep(Axis.Y, this.scaleService.State.Y1, this.scaleService.State.Y2, state.MinGridLineDistance, canvasSize.Height, state.ItemFormatter); } double stepData = back ? -stepDataAbs : stepDataAbs; // If we show lines from 0 and backward, change step sign // Calc border values in data CalcBorderValues(this.scaleService.State.Y1, this.scaleService.State.Y2, stepDataAbs, fromZero, back, stepData, out double firstData, out double endData); double maxTextSize = 0; int steps = canvasSize.Width; int lastTextPos = -1; DrawHorizontalLine(state, drawing, canvasSize, margin, ref strY, this.scaleService.State.Y1, stepData, calcWidth, ref maxTextSize, StringAlignment.Far, ref lastTextPos); // First line value for (double valueData = firstData; ((!back && valueData < endData) || (back && valueData > endData)) && steps >= 0; valueData += stepData, steps--) { DrawHorizontalLine(state, drawing, canvasSize, margin, ref strY, valueData, stepData, calcWidth, ref maxTextSize, StringAlignment.Center, ref lastTextPos); } if (this.scaleService.State.Y2 != this.scaleService.State.Y1) { DrawHorizontalLine(state, drawing, canvasSize, margin, ref strY, this.scaleService.State.Y2, stepData, calcWidth, ref maxTextSize, StringAlignment.Near, ref lastTextPos); // Last line value } if (calcWidth) { strY.Width = (float)maxTextSize > strY.Width ? (float)maxTextSize : strY.Width; } }
private void DrawVerticalLines(IGridState state, IDrawing drawing, Structs.Size canvasSize, IMargin margin, SizeF strX, ref double stepDataAbs, bool fromZero, bool back) { if (stepDataAbs == 0) { double minDistance = Math.Max(state.MinGridLineDistance, strX.Width + state.LabelPadding.LeftAndRight); stepDataAbs = ToNearRoundStep(Axis.X, this.scaleService.State.X1, this.scaleService.State.X2, minDistance, canvasSize.Width, state.ItemFormatter); } double stepData = back ? -stepDataAbs : stepDataAbs; // If we show lines from 0 and backward, change step sign // Calc first data grid line CalcBorderValues(this.scaleService.State.X1, this.scaleService.State.X2, stepDataAbs, fromZero, back, stepData, out double firstData, out double endData); int steps = canvasSize.Width; int lastTextPos = 0; double minData = this.scaleService.State.X1; double maxData = this.scaleService.State.X2; double screenPos = this.scaleService.ToScreenX(minData); DrawVerticalLine(state, drawing, canvasSize, margin, strX, screenPos, minData, maxData, stepData, StringAlignment.Center, ref lastTextPos); // First line value for (double valueData = firstData; ((!back && valueData < endData) || (back && valueData > endData)) && steps >= 0; valueData += stepData, steps--) { screenPos = this.scaleService.ToScreenX(valueData); DrawVerticalLine(state, drawing, canvasSize, margin, strX, screenPos, valueData, maxData, stepData, StringAlignment.Center, ref lastTextPos); } if (this.scaleService.State.X2 != this.scaleService.State.X1) { screenPos = this.scaleService.ToScreenX(maxData); DrawVerticalLine(state, drawing, canvasSize, margin, strX, screenPos, maxData, maxData, stepData, StringAlignment.Far, ref lastTextPos); // Last line value } }
/// <summary> /// 向excel添加图片 /// </summary> /// <param name="XlsFilePath"></param> /// <param name="pictureData"></param> /// <param name="sheetName"></param> public static void AddPicture(string XlsFilePath, byte[] pictureData, bool isNewSheet, string sheetName = "PicTure") { FileStream fs = File.OpenRead(XlsFilePath); //IWorkbook workbook = new XSSFWorkbook(fs); NPOI.XSSF.UserModel.XSSFWorkbook book = new NPOI.XSSF.UserModel.XSSFWorkbook(fs); // (NPOI.XSSF.UserModel.XSSFWorkbook)WorkbookFactory.Create(XlsFilePath); fs.Close(); int pictureIdx = book.AddPicture(pictureData, PictureType.JPEG); NPOI.SS.UserModel.ISheet sheet = null; if (!isNewSheet) { sheet = book.GetSheetAt(0); } else { sheet = book.CreateSheet(sheetName); } IDrawing patriarch = sheet.CreateDrawingPatriarch(); NPOI.XSSF.UserModel.XSSFClientAnchor anchor = new NPOI.XSSF.UserModel.XSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3); IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); pict.Resize(); using (FileStream fileStream = File.Open(XlsFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { book.Write(fileStream); fileStream.Close(); } }
private IComment insertComment(IDrawing Drawing, ICell cell, String message) { ICreationHelper factory = cell.Sheet.Workbook.GetCreationHelper(); IClientAnchor anchor = factory.CreateClientAnchor(); anchor.Col1 = (/*setter*/ cell.ColumnIndex); anchor.Col2 = (/*setter*/ cell.ColumnIndex + 1); anchor.Row1 = (/*setter*/ cell.RowIndex); anchor.Row2 = (/*setter*/ cell.RowIndex + 1); anchor.Dx1 = (/*setter*/ 100); anchor.Dx2 = (/*setter*/ 100); anchor.Dy1 = (/*setter*/ 100); anchor.Dy2 = (/*setter*/ 100); IComment comment = Drawing.CreateCellComment(anchor); IRichTextString str = factory.CreateRichTextString(message); comment.String = (/*setter*/ str); comment.Author = (/*setter*/ "fanfy"); cell.CellComment = (/*setter*/ comment); return(comment); }
public void DirectLinks(IDrawing drawing) { foreach (IDrawing subcomponent in drawing.Components) { DirectLinks(subcomponent); } IDrawing linkableDrawing = drawing; if (drawing is SelectableDrawing) linkableDrawing = (drawing as SelectableDrawing).Drawing; if (!virtualMapping.ContainsKey(linkableDrawing)) return; NSWEDrawing nsweItem = virtualMapping[linkableDrawing]; foreach (LinkDrawing link in nsweItem.Links) { LinkDirection prevDirection = link.Direction; LinkDirection newDirection = CardinalDirectionUtils.GetClosestDirectionPoints(link); if (!newDirection.Equals(link.Direction)) { link.Invalidated = true; OnLinkDirectionChanged(link, link.Direction, newDirection); link.Direction = newDirection; link.DestinationPoint.Direction = newDirection.From; link.SourcePoint.Direction = newDirection.To; } ArangeLinksForItem(link.DestinationDrawing); ArangeLinksForItem(link.SourceDrawing); } arrangeConnectionPoints(linkableDrawing); }
static void CreateChart(IDrawing drawing, ISheet sheet, IClientAnchor anchor, string serie1, string serie2) { IChart chart = drawing.CreateChart(anchor); IChartLegend legend = chart.GetOrCreateLegend(); legend.Position = LegendPosition.TopRight; ILineChartData<double, double> data = chart.ChartDataFactory.CreateLineChartData<double, double>(); // Use a category axis for the bottom axis. IChartAxis bottomAxis = chart.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom); IValueAxis leftAxis = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Left); leftAxis.Crosses = AxisCrosses.AutoZero; IChartDataSource<double> xs = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1)); IChartDataSource<double> ys1 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1)); IChartDataSource<double> ys2 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1)); var s1 = data.AddSeries(xs, ys1); s1.SetTitle(serie1); var s2 = data.AddSeries(xs, ys2); s2.SetTitle(serie2); chart.Plot(data, bottomAxis, leftAxis); }
public void MakeFigure(IBoard board, IDrawing drawing, int action) { draw = null; switch (action) { case (int)Action.Dot: draw = drawing.DrawDot; break; case (int)Action.HorizontalLine: draw = drawing.DrawHorizontalLine; break; case (int)Action.VerticalLine: draw = drawing.DrawVerticalLine; break; default: break; } int currentY = Console.CursorTop; draw?.Invoke(board); Console.SetCursorPosition(0, currentY - 1); }
public void TestQuickGuide() { IWorkbook wb = _testDataProvider.CreateWorkbook(); ICreationHelper factory = wb.GetCreationHelper(); ISheet sheet = wb.CreateSheet(); ICell cell = sheet.CreateRow(3).CreateCell(5); cell.SetCellValue("F4"); IDrawing drawing = sheet.CreateDrawingPatriarch(); IClientAnchor anchor = factory.CreateClientAnchor(); IComment comment = drawing.CreateCellComment(anchor); IRichTextString str = factory.CreateRichTextString("Hello, World!"); comment.String = (str); comment.Author = ("Apache POI"); //assign the comment to the cell cell.CellComment = (comment); wb = _testDataProvider.WriteOutAndReadBack(wb); sheet = wb.GetSheetAt(0); cell = sheet.GetRow(3).GetCell(5); comment = cell.CellComment; Assert.IsNotNull(comment); Assert.AreEqual("Hello, World!", comment.String.String); Assert.AreEqual("Apache POI", comment.Author); Assert.AreEqual(3, comment.Row); Assert.AreEqual(5, comment.Column); }
public void Test44916() { HSSFWorkbook wb = new HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet = wb.CreateSheet(); // 1. Create drawing patriarch IDrawing patr = sheet.CreateDrawingPatriarch(); // 2. Try to re-get the patriarch IDrawing existingPatr; try { existingPatr = sheet.DrawingPatriarch; } catch (NullReferenceException) { throw new AssertionException("Identified bug 44916"); } // 3. Use patriarch HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 245, (short)1, 1, (short)1, 2); anchor.AnchorType = (AnchorType)(3); byte[] pictureData = HSSFTestDataSamples.GetTestDataFileContent("logoKarmokar4.png"); int idx1 = wb.AddPicture(pictureData, PictureType.PNG); patr.CreatePicture(anchor, idx1); // 4. Try to re-use patriarch later existingPatr = sheet.DrawingPatriarch; Assert.IsNotNull(existingPatr); }
private void btn_ExTWO_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = @"Excel|*.xls"; sfd.ShowDialog(); string path = sfd.FileName; PlotModel pm = plotView1.Model; var pngExporter = new PngExporter { Width = 1000, Height = 400, Background = OxyColors.White }; Bitmap bitmap = pngExporter.ExportToBitmap(pm); Image image = bitmap; MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); byte[] bytes = ms.ToArray(); IWorkbook workbook = new HSSFWorkbook(); workbook.CreateSheet("sheet1"); if (path != "") { using (FileStream fs = File.Create(path)) { ISheet sheet = workbook.GetSheetAt(0); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, 0, 5, 6, 10); int pic = workbook.AddPicture(bytes, PictureType.PNG); IDrawing patriarch = sheet.CreateDrawingPatriarch(); IPicture ipic = patriarch.CreatePicture(anchor, pic); ipic.Resize(); workbook.Write(fs); } MessageBox.Show("保存成功!"); } }
/// <summary> /// Adds drawing object to the list of drawing objects. /// </summary> /// <param name="drawing">Drawing object.</param> public void AddDrawing(IDrawing drawing) { Drawing d = drawing as Drawing; if (d == null) { throw new ArgumentException("Drawing object doesn't implement internal class.", nameof(drawing)); } int index = drawings.IndexOf(drawing); if (index >= 0) { throw new ArgumentException("Drawing object is already part of this canvas.", nameof(drawing)); } if (d.Container != null) { d.Container.RemoveDrawing(drawing); } UICanvas.Dispatcher.Invoke(() => { UICanvas.Children.Add((System.Windows.UIElement)drawing.UIObject); }); drawings.Add(drawing); d.Container = this; }
static void Main(string[] args) { IWorkbook wb = new XSSFWorkbook(); ISheet sheet1 = wb.CreateSheet("First Sheet"); //add picture data to this workbook. byte[] bytes = File.ReadAllBytes("../../data/aspose.png"); int pictureIdx = wb.AddPicture(bytes, PictureType.PNG); ICreationHelper helper = wb.GetCreationHelper(); // Create the drawing patriarch. This is the top level container for all shapes. IDrawing drawing = sheet1.CreateDrawingPatriarch(); // add a picture shape IClientAnchor anchor = helper.CreateClientAnchor(); //set top-left corner of the picture, //subsequent call of Picture#resize() will operate relative to it anchor.Col1 = 3; anchor.Row1 = 2; IPicture pict = drawing.CreatePicture(anchor, pictureIdx); //auto-size picture relative to its top-left corner pict.Resize(); FileStream sw = File.Create("../../data/image.xlsx"); wb.Write(sw); sw.Close(); }
public void TestOneSeriePlot() { IWorkbook wb = new XSSFWorkbook(); ISheet sheet = new SheetBuilder(wb, plotData).Build(); IDrawing Drawing = sheet.CreateDrawingPatriarch(); IClientAnchor anchor = Drawing.CreateAnchor(0, 0, 0, 0, 1, 1, 10, 30); IChart chart = Drawing.CreateChart(anchor); IChartAxis bottomAxis = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Bottom); IChartAxis leftAxis = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Left); IScatterChartData <string, double> scatterChartData = chart.ChartDataFactory.CreateScatterChartData <string, double>(); IChartDataSource <String> xs = DataSources.FromStringCellRange(sheet, CellRangeAddress.ValueOf("A1:J1")); IChartDataSource <double> ys = DataSources.FromNumericCellRange(sheet, CellRangeAddress.ValueOf("A2:J2")); IScatterChartSerie <string, double> serie = scatterChartData.AddSerie(xs, ys); Assert.IsNotNull(serie); Assert.AreEqual(1, scatterChartData.GetSeries().Count); Assert.IsTrue(scatterChartData.GetSeries().Contains(serie)); chart.Plot(scatterChartData, bottomAxis, leftAxis); }
////重载 //public ISheet pictureDataToSheet(ISheet sheet, HSSFPicture pictureNPOI, int startRow, int startCol, int endRow, int endCol) //{ // workbook.AddPicture(pictureNPOI.) //} /// <summary> /// 画矩形,2.0似乎还未实现,xslx格式未实现 /// </summary> /// <param name="sheet"></param> /// <param name="content_string"></param> /// <param name="dx1"></param> /// <param name="dy1"></param> /// <param name="dx2"></param> /// <param name="dy2"></param> /// <param name="startRow"></param> /// <param name="startCol"></param> /// <param name="endRow"></param> /// <param name="endCol"></param> /// <returns></returns> public ISheet shapJuxingToSheet(ISheet sheet, string content_string, int dx1, int dy1, int dx2, int dy2, int startRow, int startCol, int endRow, int endCol) { if (sheet == null) { sheet = this.workbook.CreateSheet(); } //创建DrawingPatriarch,存放的容器 IDrawing patriarch = sheet.CreateDrawingPatriarch(); //画图形的位置点 IClientAnchor anchor = patriarch.CreateAnchor(dx1, dy1, dx2, dy2, startCol, startRow, endCol, endRow); //将图片文件读入workbook,用索引指向该文件 //int pictureIdx = workbook.AddPicture(pictureNPOI, PictureType.TIFF); //IShape recl; //根据读入图片和anchor把图片插到相应的位置 //IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); //原始大小显示,重载可指定缩放 //pict.Resize(0.9); return(sheet); }
/*泛类型行不通 * public ISheet pictureDataToSheet<T>(ISheet sheet, T pictureNPOI,int startRow,int startCol, int endRow,int endCol) * // where T: XSSFPicture, HSSFPicture,类型应该只有一种的原因吧,无法执行类型约束为两个类,因为类的约束必须放在第一个 * { * * XSSFPicture pictureNPOI_XSSFPicture = pictureNPOI as XSSFPicture; * HSSFPalette pictureNPOI_HSSFPalette = pictureNPOI as HSSFPalette; * //XSSFPicture,HSSFPalette是类,只能有一种类型,正好是泛类型要解决的 * //方法和使用一样,但是T的类型取决类申城的Isheet的类型 * //应该使用重载 * if (true) * { * * } * else * { * return null; * } * workbook.AddPicture(pictureNPOI.) * } */ /// <summary> /// Excel sheet中插入图片 /// </summary> /// <param name="sheet"></param> /// <param name="pictureNPOI"></param> /// <param name="dx1"></param> /// <param name="dy1"></param> /// <param name="dx2"></param> /// <param name="dy2"></param> /// <param name="startRow"></param> /// <param name="startCol"></param> /// <param name="endRow"></param> /// <param name="endCol"></param> /// <returns></returns> //重载 public void pictureDataToSheet(ISheet sheet, byte[] pictureNPOI, int dx1, int dy1, int dx2, int dy2, int startRow, int startCol, int endRow, int endCol) { /*将实际图片转换为pictureData时使用,但是pictureNPOI本身就是picture * byte[] pictureByte= * workbook.AddPicture(, PictureType.PNG); */ //判断是否有sheet //无,则创建 if (sheet == null) { sheet = this.workbook.CreateSheet(); } //执行向sheet写图片 //创建DrawingPatriarch,存放的容器 IDrawing patriarch = sheet.CreateDrawingPatriarch(); ///System.InvalidCastException:“无法将类型为“NPOI.XSSF.UserModel.XSSFDrawing”的对象强制转换为类型“NPOI.HSSF.UserModel.HSSFPatriarch”。” /// HSSFPatriarch patriarch = (HSSFPatriarch)sheetA.CreateDrawingPatriarch(); /// 根据报错改为如下 // IDrawing patriarch = sheet.CreateDrawingPatriarch(); //XSSFClientAnchor anchor = new XSSFClientAnchor(dx1, dy1, dx2, dy2, startCol, startRow, endCol, endRow); IClientAnchor anchor = patriarch.CreateAnchor(dx1, dy1, dx2, dy2, startCol, startRow, endCol, endRow); //将图片文件读入workbook,用索引指向该文件 int pictureIdx = workbook.AddPicture(pictureNPOI, PictureType.PNG); //根据读入图片和anchor把图片插到相应的位置 IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); //原始大小显示,重载可指定缩放 //pict.Resize(0.9); //return sheet; }
public override void Read(IDrawing drawing) { try { DxfDocument dxf = DxfDocument.Load(_stream); var entities = new List <Entity>(); entities.AddRange(ReadLines(dxf)); entities.AddRange(ReadPolylines(dxf)); entities.AddRange(ReadArcs(dxf)); entities.AddRange(ReadCircles(dxf)); entities.AddRange(ReadEllipses(dxf)); foreach (var item in drawing.CurrentBlock) { item.Erase(); } foreach (var item in entities) { drawing.CurrentBlock.AppendEntity(item); } } finally { if (_stream != null) { _stream.Close(); } } }
/// <summary> /// Initializes a new instance of the <see cref="DrawingViewer"/> class. /// </summary> /// <param name="drawing">The drawing to be presented to the user.</param> public DrawingViewer(IDrawing drawing) { HorizontalAlignment = HorizontalAlignment.Left; MouseMove += OnMouseMove; MouseLeave += OnMouseLeave; AddChild(drawing.UIObject); tooltip = new ToolTip { PlacementTarget = this, Placement = System.Windows.Controls.Primitives.PlacementMode.Relative, }; tooltipMaxSize = new Size(0, 0); ToolTip = tooltip; List <Bitmap> bmps = new List <Bitmap>(); Queue <IDrawing> queue = new Queue <IDrawing>(); queue.Enqueue(drawing); while (queue.Count > 0) { drawing = queue.Dequeue(); if (drawing is Bitmap bitmap) { bmps.Add(bitmap); } else if (drawing is ICanvas canvas) { foreach (var d in canvas.Drawings) { queue.Enqueue(d); } } } bitmaps = bmps.ToArray(); }
public DrawingController(IUnityContainer container, IDrawing drawing) { _container = container; Drawing = drawing; ShapeControllerList.CollectionChanged += ShapeControllerList_CollectionChanged; }
static void Main(string[] args) { IWorkbook wb = new XSSFWorkbook(); ISheet sheet = wb.CreateSheet("linechart"); // Create a row and put some cells in it. Rows are 0 based. IRow row; ICell cell; for (int rowIndex = 0; rowIndex < NUM_OF_ROWS; rowIndex++) { row = sheet.CreateRow((short)rowIndex); for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) { cell = row.CreateCell((short)colIndex); cell.SetCellValue(colIndex * (rowIndex + 1)); } } IDrawing drawing = sheet.CreateDrawingPatriarch(); IClientAnchor anchor1 = drawing.CreateAnchor(0, 0, 0, 0, 0, 5, 10, 15); CreateChart(drawing, sheet, anchor1, "title1", "title2"); IClientAnchor anchor2 = drawing.CreateAnchor(0, 0, 0, 0, 0, 20, 10, 35); CreateChart(drawing, sheet, anchor2, "s1", "s2"); using (FileStream fs = File.Create("test.xlsx")) { wb.Write(fs); } }
void MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { _end = e.Location; _moving = false; if (_new != null) { if (Math.Abs(_end.X - _start.X) <= 1 && Math.Abs(_end.Y - _start.Y) <= 1) { _end.X = _start.X + 100; _end.Y = _start.Y + 100; } _new.Update(_start.X, _start.Y, _end.X, _end.Y); Selection = _new; _new = null; _chart.Cursor = Cursors.Default; Status = "Select or add drawing"; } _chart.Refresh(); options.DrawingType = DrawingType.None; if (Selection != null) { options.DrawingType = Selection.DrawingType; } }
private void tvList_AfterSelect(object sender, TreeViewEventArgs e) { DrawingContext context = new DrawingContext(graphics); using (Pen pen = new Pen(Color.Blue, lineWidth)) { context.Pen = pen; if (e.Node.Nodes.Count > 0) {//存在子项 pen.Color = Color.Green; Cursor.Current = Cursors.WaitCursor; foreach (TreeNode node in e.Node.Nodes) { IDrawing drawing = node.Tag as IDrawing; if (drawing != null) { drawing.Draw(context); } Thread.Sleep(250); } Cursor.Current = Cursors.Default; } else { IDrawing drawing = e.Node.Tag as IDrawing; if (drawing != null) { drawing.Draw(context); } } } }
static void CreateChart(IDrawing drawing, ISheet sheet, IClientAnchor anchor, string serie1, string serie2) { IChart chart = drawing.CreateChart(anchor); IChartLegend legend = chart.GetOrCreateLegend(); legend.Position = LegendPosition.TopRight; ILineChartData <double, double> data = chart.GetChartDataFactory().CreateLineChartData <double, double>(); // Use a category axis for the bottom axis. IChartAxis bottomAxis = chart.GetChartAxisFactory().CreateCategoryAxis(AxisPosition.Bottom); IValueAxis leftAxis = chart.GetChartAxisFactory().CreateValueAxis(AxisPosition.Left); leftAxis.SetCrosses(AxisCrosses.AutoZero); IChartDataSource <double> xs = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1)); IChartDataSource <double> ys1 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1)); IChartDataSource <double> ys2 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1)); var s1 = data.AddSerie(xs, ys1); s1.SetTitle(serie1); var s2 = data.AddSerie(xs, ys2); s2.SetTitle(serie2); chart.Plot(data, bottomAxis, leftAxis); }
public void Run(IRegistry registry) { IBoard board = registry.Board; IProcessUserInput processUserInput = registry.ProcessUserInput; IShowMessageToUser showMessageToUser = registry.ShowMessageToUser; IExecuteUserChoice executeUserChoice = registry.ExecuteUserChoice; IDrawing drawing = registry.Drawing; board.SetBoardSize(40, 20); drawing.DrawBoard(board); showMessageToUser.ShowHelloToUser(); showMessageToUser.ShowInstructionForUser("Enter the action to affect the board:"); while (true) { int currentChoice = processUserInput.GetChoice(); if (executeUserChoice.IsExit(currentChoice)) { break; } if (!executeUserChoice.IsValid(currentChoice)) { showMessageToUser.ShowInstructionForUser("Ivalid input! Please, try again, choose from the options."); continue; } executeUserChoice.MakeFigure(board, drawing, currentChoice); } }
public void AttemptToSave2CommentsWithSameCoordinates() { IWorkbook wb = _testDataProvider.CreateWorkbook(); ISheet sh = wb.CreateSheet(); ICreationHelper factory = wb.GetCreationHelper(); IDrawing patriarch = sh.CreateDrawingPatriarch(); patriarch.CreateCellComment(factory.CreateClientAnchor()); try { patriarch.CreateCellComment(factory.CreateClientAnchor()); _testDataProvider.WriteOutAndReadBack(wb); Assert.Fail("Expected InvalidOperationException(found multiple cell comments for cell $A$1"); } catch (InvalidOperationException e) { // HSSFWorkbooks fail when writing out workbook Assert.AreEqual(e.Message, "found multiple cell comments for cell A1"); } catch (ArgumentException e) { // XSSFWorkbooks fail when creating and setting the cell address of the comment Assert.AreEqual(e.Message, "Multiple cell comments in one cell are not allowed, cell: A1"); } finally { wb.Close(); } }
public Registry() { this.Board = new Board(); this.ProcessUserInput = new ProcessUserInput(); this.ShowMessageToUser = new ShowMessageToUser(); this.Drawing = new Drawing(); }
/// <summary> /// 设置单元格值 /// </summary> /// <param name="cell">单元格</param> /// <param name="value">值</param> public static void SetValue(this ICell cell, object value) { if (cell == null) { return; } if (value == null) { cell.SetCellValue(string.Empty); return; } if (value.GetType().FullName.Equals("System.Byte[]")) { var pictureIndex = cell.Sheet.Workbook.AddPicture((byte[])value, PictureType.PNG); IClientAnchor anchor = cell.Sheet.Workbook.GetCreationHelper().CreateClientAnchor(); anchor.Col1 = cell.ColumnIndex; anchor.Col2 = cell.ColumnIndex + cell.GetSpan().ColumnSpan; anchor.Row1 = cell.RowIndex; anchor.Row2 = cell.RowIndex + cell.GetSpan().RowSpan; IDrawing drawing = cell.Sheet.CreateDrawingPatriarch(); IPicture picture = drawing.CreatePicture(anchor, pictureIndex); return; } TypeCode valueTypeCode = Type.GetTypeCode(value.GetType()); switch (valueTypeCode) { case TypeCode.String: cell.SetCellValue(Convert.ToString(value)); break; case TypeCode.DateTime: cell.SetCellValue(Convert.ToDateTime(value)); break; case TypeCode.Boolean: cell.SetCellValue(Convert.ToBoolean(value)); break; case TypeCode.Int16: case TypeCode.Int32: case TypeCode.Int64: case TypeCode.Byte: case TypeCode.Single: case TypeCode.Double: case TypeCode.Decimal: case TypeCode.UInt16: case TypeCode.UInt32: case TypeCode.UInt64: cell.SetCellValue(Convert.ToDouble(value)); break; default: cell.SetCellValue(string.Empty); break; } }
public static void DrawRay(IDrawing owner, DrawingContext thisDC, Pen pen, CADPoint basePoint, CADVector direction, bool mdoelToCanvas = true) { CADVector dir; CADPoint basePnt; if (mdoelToCanvas) { basePnt = owner.ModelToCanvas(basePoint); CADPoint otherPnt = owner.ModelToCanvas(basePoint + direction); dir = (otherPnt - basePnt).normalized; } else { basePnt = basePoint; dir = direction; dir.Normalize(); } double xk = double.MinValue; double yk = double.MinValue; if (basePnt.X > 0 && basePnt.X < 10000 && basePnt.Y > 0 && basePnt.Y < 10000) { xk = 1; yk = 1; } else { if (dir.Y != 0) { double k = -basePnt.Y / dir.Y; if (k >= 0) { xk = basePnt.X + k * dir.X; } } if (dir.X != 0) { double k = -basePnt.X / dir.X; if (k >= 0) { yk = basePnt.Y + k * dir.Y; } } } if (xk > 0 || (xk == 0 && dir.X * dir.Y >= 0) || yk > 0 || (yk == 0 && dir.X * dir.Y >= 0)) { CADPoint epnt = basePnt + 10000 * dir; DrawLine(owner, thisDC, pen, new CADPoint(basePnt.X, basePnt.Y), new CADPoint(epnt.X, epnt.Y), false); } }
public SelectableDrawing(IDrawing drawing) { this.drawing = drawing; this.selectionBorder = new SelectionBorder(drawing); if (drawing is IResizable) { (drawing as IResizable).DrawingResized += new DrawingResizedHandler(OnDrawingResized); } }
public static LinkDirection Create(IDrawing sourceDrawing, IDrawing destinationDrawing) { CardinalDirection from = CardinalDirection.None; CardinalDirection to = CardinalDirection.None; if (sourceDrawing.Location.Y > destinationDrawing.Location.Y + destinationDrawing.Size.Height) { from = CardinalDirection.South; to = CardinalDirection.North; } else if (sourceDrawing.Location.Y + sourceDrawing.Size.Height < destinationDrawing.Location.Y) { from = CardinalDirection.North; to = CardinalDirection.South; } else if (sourceDrawing.Location.X > destinationDrawing.Location.X + destinationDrawing.Size.Width) { from = CardinalDirection.East; to = CardinalDirection.West; } else if (sourceDrawing.Location.X + sourceDrawing.Size.Width < destinationDrawing.Location.X) { from = CardinalDirection.West; to = CardinalDirection.East; } return new LinkDirection(from, to); }
public NSWEDrawing(ILinkableDrawing drawing) { this.drawing = drawing; links = new List<LinkDrawing>(); inputLinkList = new List<LinkDrawing>(); outputLinkList = new List<LinkDrawing>(); linksNone = new List<LinkDrawing>(); linksNorth = new List<LinkDrawing>(); linksSouth = new List<LinkDrawing>(); linksWest = new List<LinkDrawing>(); linksEast = new List<LinkDrawing>(); linkPointsNone = new List<CardinalLinkPoint>(); linkPointsNorth = new List<CardinalLinkPoint>(); linkPointsSouth = new List<CardinalLinkPoint>(); linkPointsWest = new List<CardinalLinkPoint>(); linkPointsEast = new List<CardinalLinkPoint>(); switch (drawing.LinkAttachMode) { case LinkAttachMode.LEFT_RIGHT: allowEast = true; allowWest = true; allowNorth = false; allowSouth = false; break; case LinkAttachMode.TOP_BOTTOM: allowEast = false; allowWest = false; allowNorth = true; allowSouth = true; break; case LinkAttachMode.ALL: allowEast = true; allowWest = true; allowNorth = true; allowSouth = true; break; } }
public MovableDrawing(IDrawing drawing) { this.drawing = drawing; }
// connect the scripting language to the IDrawing instance public static void SetDrawing(IDrawing drawing) { Drawing = drawing; }
public void ArangeLinksForItem(IDrawing structureDrawing) { arrangeConnectionPoints(structureDrawing); arrangeLinkPoints(structureDrawing); }
public DrawStuffOnTheGamesCanvas( IDrawing drawing, IGame game ) { _drawing = drawing ; _game = game ; _debugDrawActions = new List<Action>(); }
public SelectionBorder(IDrawing item) { this.drawing = item; }
private void arrangeConnectionPoints(IDrawing diagramItem) { NSWEDrawing item = virtualMapping[diagramItem]; if (item.LinkPointsSouth.Count > 1) SortCounterPoints(item.LinkPointsSouth); if (item.LinkPointsNorth.Count > 1) SortCounterPoints(item.LinkPointsNorth); if (item.LinkPointsWest.Count > 1) SortCounterPoints(item.LinkPointsWest); if (item.LinkPointsEast.Count > 1) SortCounterPoints(item.LinkPointsEast); }
void InvalidateDrawing(IDrawing drawing) { drawing.Invalidated = true; MergeableRectangle newRectangleToInvalidate = new MergeableRectangle(drawing.InvalidatedRegion); Rectangle auxRectangle = newRectangleToInvalidate.Bounds; invalidateOverlappingDrawings(previouslyInvalidatedRectangle); newRectangleToInvalidate.Merge(previouslyInvalidatedRectangle); previouslyInvalidatedRectangle = auxRectangle; invalidateOverlappingDrawings(newRectangleToInvalidate.Bounds); double scaleFactor = containerDrawer.DiagramContainer.ZoomFactor / 100; Rectangle r = new Rectangle((int)(Math.Ceiling(newRectangleToInvalidate.Bounds.X * scaleFactor)), (int)(Math.Ceiling(newRectangleToInvalidate.Bounds.Y * scaleFactor)), (int)(Math.Ceiling(newRectangleToInvalidate.Bounds.Width * scaleFactor)), (int)(Math.Ceiling(newRectangleToInvalidate.Bounds.Height * scaleFactor))); containerDrawer.DiagramContainer.Invalidate(r); }
public void AddDrawing(IDrawing drawing, bool selectable) { IDrawing drawingToAdd; if (selectable) { drawingToAdd = new SelectableDrawing(drawing); } else { drawingToAdd = drawing; } containerDrawer.Drawings.Add(drawingToAdd); }
public DeleteFromDrawingVisitor(IDrawing drawing) { Drawing = drawing; DeletedFigures = new FigureCollection (); }
public InsertIntoDrawingVisitor (IDrawing drawing) { Drawing = drawing; _addedFigures = new FigureCollection (); }
public DrawingResizedEventArgs(IDrawing drawing, Rectangle previousBounds, Rectangle newBounds) { this.drawing = drawing; this.previousBounds = previousBounds; this.newBounds = newBounds; }
private Figure FindConnectableFigure(double x, double y, IDrawing drawing) { return drawing.Children.LastOrDefault (f => f.ContainsPoint (x, y) && IsConnectionPossible (f)); }
private RectangleF getDrawerScaledBounds(float scaleFactor, IDrawing drawer) { return new RectangleF( (float)(drawer.Location.X * scaleFactor), (float)(drawer.Location.Y * scaleFactor), (float)(drawer.Size.Width * scaleFactor), (float)(drawer.Size.Height * scaleFactor) ); }
private void FillSheet(int tableIndex,DataTable dataToFill) { if (string.IsNullOrEmpty(dataToFill.TableName)) { dataToFill.TableName = "table" + tableIndex; } ISheet sheet; if (tableIndex < Book.NumberOfSheets) { sheet = Book.GetSheetAt(tableIndex); } else { sheet = Book.CreateSheet(dataToFill.TableName); } patriarch = sheet.CreateDrawingPatriarch(); DataColumnCollection cols = dataToFill.Columns; //创建表头 for (int h = 0; h <= HeaderRows; h++) { IRow headrow = sheet.CreateRow(h); if (h == HeaderRows) { CreateCellForRow(headrow, cols, null, true); } else { CreateCellForRow(headrow, cols, null, false); } } //填充内容 for (int i = 0; i < dataToFill.Rows.Count; i++) { var dataRow = dataToFill.Rows[i]; var excelRow = sheet.CreateRow(HeaderRows + 1 + i); CreateCellForRow(excelRow, cols, dataRow, false); } }
Rectangle getStructureInvalidatedRegion(IDrawing targetDrawing) { targetDrawing.Invalidated = true; MergeableRectangle rectangle = new MergeableRectangle(targetDrawing.InvalidatedRegion); for (int i = 0; i < containerDrawer.Drawings.Count; i++) { IDrawing drawing = containerDrawer.Drawings[i]; if (drawing.Bounds.IntersectsWith(rectangle.Bounds) && drawing.Invalidated == false) { drawing.Invalidated = true; rectangle.Merge(drawing.Bounds); } } return rectangle.Bounds; }
public void DirectLinks(IDrawing item) { throw new NotImplementedException(); }
public GleedRenderer( IDrawing drawing, IGame game ) { _drawing = drawing ; _game = game ; _debugDrawActions = new List<Action>(); }
public void AddItem(Item item, IDrawing drawing, bool selectable, bool movable) { IDrawing drawingToAdd; if (selectable) { drawingToAdd = new SelectableDrawing(drawing); } else { drawingToAdd = drawing; } item.Drawing = drawing; containerDrawer.Drawings.Add(drawingToAdd); }
private IFigure FindConnectableFigure (double x, double y, IDrawing drawing) { foreach (IFigure figure in drawing.FiguresEnumeratorReverse) { if (figure.ContainsPoint (x, y) && IsConnectionPossible (figure)) { return figure; } } return null; }
// Set the comment on a sheet // private static void setComment(ISheet sheet, ICell cell, IDrawing drawing, String commentText, ICreationHelper helper, IClientAnchor anchor) { //System.out.println("Setting col: " + cell.getColumnIndex() + " and row " + cell.getRowIndex()); anchor.Col1 = (cell.ColumnIndex); anchor.Col2 = (cell.ColumnIndex); anchor.Row1 = (cell.RowIndex); anchor.Row2 = (cell.RowIndex); // get comment, or create if it does not exist // NOTE - only occurs if getCellComment is called first IComment comment = cell.CellComment; //Comment comment = null; if (comment == null) { comment = drawing.CreateCellComment(anchor); } comment.Author = ("Test"); // attach the comment to the cell comment.String = (helper.CreateRichTextString(commentText)); cell.CellComment = (comment); }
private IConnector FindConnectionTarget (double x, double y, IDrawing drawing) { IFigure target = FindConnectableFigure (x, y, drawing); return target != null ? target.ConnectorAt (x, y) : null; }
/// <summary> /// This method arrange all the points of the links attached to the IDrawing /// </summary> /// <param name="item"></param> private void arrangeLinkPoints(IDrawing item) { int drawingNorthPoints = 0, drawingSouthPoints = 0, drawingWestPoints = 0, drawingEastPoints = 0; NSWEDrawing virtualItem = virtualMapping[item]; foreach (LinkDrawing link in virtualItem.InputLinkList) { switch (link.Direction.To) { case CardinalDirection.North: drawingSouthPoints++; link.DestinationPoint.X = item.Location.X + drawingSouthPoints * item.Size.Width / (virtualItem.LinkPointsSouth.Count + 1); link.DestinationPoint.Y = item.Location.Y + item.Size.Height; break; case CardinalDirection.South: drawingNorthPoints++; link.DestinationPoint.X = item.Location.X + drawingNorthPoints * item.Size.Width / (virtualItem.LinkPointsNorth.Count + 1); link.DestinationPoint.Y = item.Location.Y; break; case CardinalDirection.West: drawingEastPoints++; link.DestinationPoint.X = item.Location.X + item.Size.Width; link.DestinationPoint.Y = item.Location.Y + drawingEastPoints * item.Size.Height / (virtualItem.LinkPointsEast.Count + 1); break; case CardinalDirection.East: drawingWestPoints++; link.DestinationPoint.X = item.Location.X; link.DestinationPoint.Y = item.Location.Y + drawingWestPoints * item.Size.Height / (virtualItem.LinkPointsWest.Count + 1); break; default: link.DestinationPoint.X = item.Location.X + item.Size.Width / 2; link.DestinationPoint.Y = item.Location.Y + item.Size.Height / 2; break; } } foreach (LinkDrawing link in virtualItem.OutputLinkList) { switch (link.Direction.From) { case CardinalDirection.South: drawingNorthPoints++; link.SourcePoint.X = item.Location.X + drawingNorthPoints * item.Size.Width / (virtualItem.LinkPointsNorth.Count + 1); link.SourcePoint.Y = item.Location.Y; break; case CardinalDirection.North: drawingSouthPoints++; link.SourcePoint.X = item.Location.X + drawingSouthPoints * item.Size.Width / (virtualItem.LinkPointsSouth.Count + 1); link.SourcePoint.Y = item.Location.Y + item.Size.Height; break; case CardinalDirection.East: drawingWestPoints++; link.SourcePoint.X = item.Location.X; link.SourcePoint.Y = item.Location.Y + drawingWestPoints * item.Size.Height / (virtualItem.LinkPointsWest.Count + 1); break; case CardinalDirection.West: drawingEastPoints++; link.SourcePoint.X = item.Location.X + item.Size.Width; link.SourcePoint.Y = item.Location.Y + drawingEastPoints * item.Size.Height / (virtualItem.LinkPointsEast.Count + 1); break; default: link.SourcePoint.X = item.Location.X + item.Size.Width / 2; link.SourcePoint.Y = item.Location.Y + item.Size.Height / 2; break; } } arrangeConnectionPoints(item); }
protected bool NullCell(Point coords, out IDrawing drawing) { drawing = null; return false; }
public LightEditor( ) { _properties=new LightProperties( ); _drawing = ObjectFactory.GetInstance<IDrawing>( ) ; }
public DrawingEventArgs(IDrawing draw, RectangleD rect) { Drawing = draw; Rectangle = rect; }