Example #1
0
        //step 1. render dxf data from unscaledGraphicalData to bitmapInitial. Also initialize bitmapInitial. currentscalefactor should be set up beforehand
        public void drawImageToBitmapUsingCurrentScaleFactor()
        {
            double bitmapInitialWidth  = Math.Abs(this.unscaledGraphicalData.XLowerLeft - this.unscaledGraphicalData.XUpperRight);
            double bitmapInitialHeight = Math.Abs(this.unscaledGraphicalData.YLowerLeft - this.unscaledGraphicalData.YUpperRight);
            //you know, dxf file might not be located at 0; 0 as lower Left. So I apply movement coefficients
            double unscaledOffsetX    = this.unscaledGraphicalData.XLowerLeft;
            double unscaledOffsetY    = this.unscaledGraphicalData.YLowerLeft;
            double newWidthPrescaled  = currentscalefactor * bitmapInitialWidth;
            double newHeightPrescaled = currentscalefactor * bitmapInitialHeight;

            bitmapInitial = new Bitmap((int)Math.Round(newWidthPrescaled) + 1, (int)Math.Round(newHeightPrescaled) + 1);
            using (Graphics ee = Graphics.FromImage(bitmapInitial))
            {
                ee.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
                ee.SmoothingMode     = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                // RENDERING CODE GOES HERE !
                foreach (DXFRendering.GRAPHICAL.DXFentryForDisplay item in unscaledGraphicalData)
                {
                    if (item is DXFRendering.GRAPHICAL.MyDxfLineForDisplay)
                    {
                        DXFRendering.GRAPHICAL.MyDxfLineForDisplay lineEntry = (item as DXFRendering.GRAPHICAL.MyDxfLineForDisplay);
                        ee.DrawLine(lineEntry.penStructure, (float)((lineEntry.XStart - unscaledOffsetX) * currentscalefactor), (float)((lineEntry.YStart - unscaledOffsetY) * currentscalefactor),
                                    (float)((lineEntry.XEnd - unscaledOffsetX) * currentscalefactor), (float)((lineEntry.YEnd - unscaledOffsetY) * currentscalefactor));
                    }
                    else if (item is DXFRendering.GRAPHICAL.MyDxfArcForDisplay)
                    {
                        DXFRendering.GRAPHICAL.MyDxfArcForDisplay arcEntry = (item as DXFRendering.GRAPHICAL.MyDxfArcForDisplay);
                        ee.DrawArc(arcEntry.penStructure,
                                   (float)((arcEntry.XUpper - unscaledOffsetX) * currentscalefactor), (float)((arcEntry.YUpper - unscaledOffsetY) * currentscalefactor),
                                   (float)(arcEntry.Width * currentscalefactor), (float)(arcEntry.Height * currentscalefactor),
                                   (float)arcEntry.startAngle, (float)arcEntry.sweepAngle);
                    }
                }
            }
            bitmapInitial.RotateFlip(RotateFlipType.RotateNoneFlipY);
            this.VerticalScroll.Value   = 0; this.HorizontalScroll.Value = 0;
            realPaintingCanvas.Width    = bitmapInitial.Width; realPaintingCanvas.Height = bitmapInitial.Height;
            realPaintingCanvas.Location = new Point(0, 0);
            bitmapRender = bitmapInitial.Clone(new Rectangle(0, 0, bitmapInitial.Width, bitmapInitial.Height), bitmapInitial.PixelFormat);
        }
Example #2
0
        //step 0. get the file structure from dxf and gradually turn it into drawing struct
        public void prepareGraphicalDataStruct(DXFRendering.LOGICAL.completeDxfStruct in_structFromFile)
        {
            unscaledGraphicalData = new DXFRendering.GRAPHICAL.CompleteDxfDrawingStruct();
            int lngthOfStruct = in_structFromFile.getSize();

            for (int i = 0; i < lngthOfStruct; i++)   //read and convert entries from supplied struct to display struct with data ready to display
            {
                DXFRendering.LOGICAL.DXFdrawingEntry someEntry = in_structFromFile.getItemByIndex(i);
                Pen usedPen = null;
                if ((collectionOfLayerDefinitions != null) && (collectionOfLayerDefinitions.ContainsKey(someEntry.layerIdentifier)))
                {
                    usedPen = collectionOfLayerDefinitions[someEntry.layerIdentifier].Item2;
                }
                else
                {
                    usedPen = new Pen(Color.Black);
                }
                DXFRendering.LOGICAL.MyDxfBoundingBox     tmpboundbox = someEntry.GetBoundingBox();
                DXFRendering.GRAPHICAL.DXFentryForDisplay tmpEntry2   = null;
                if (someEntry is DXFRendering.LOGICAL.MyDxfLine)
                {
                    tmpEntry2 = new DXFRendering.GRAPHICAL.MyDxfLineForDisplay(
                        (someEntry as DXFRendering.LOGICAL.MyDxfLine).XStart,
                        (someEntry as DXFRendering.LOGICAL.MyDxfLine).YStart,
                        (someEntry as DXFRendering.LOGICAL.MyDxfLine).XEnd,
                        (someEntry as DXFRendering.LOGICAL.MyDxfLine).YEnd, usedPen);
                }
                else if (someEntry is DXFRendering.LOGICAL.MyDxfArc)
                {
                    DXFRendering.LOGICAL.MyDxfArc castArc = someEntry as DXFRendering.LOGICAL.MyDxfArc;
                    tmpEntry2 = new DXFRendering.GRAPHICAL.MyDxfArcForDisplay(castArc.XCenter, castArc.YCenter, castArc.Radius, castArc.StartAngleDegree, castArc.EndAngleDegree, usedPen);
                }
                // distilled it
                this.unscaledGraphicalData.addSingleEntry(tmpEntry2, tmpboundbox.XLowerLeft, tmpboundbox.YLowerLeft, tmpboundbox.XUpperRight, tmpboundbox.YUpperRight);
            }
        }