示例#1
0
文件: EntryPoint.cs 项目: hexlify/tdd
        private static void Main(string[] args)
        {
            var randomLayouter = LayouterWithRandomSizeRectangles();

            Console.WriteLine("Random generated");
            var simpleLayouter = SimpleLayouter();

            Console.WriteLine("Simple generated");

            var imageWriter = new ImageWriter();
            var imageDrawer = new ImageDrawer();

            imageWriter.Write(imageDrawer.Draw(randomLayouter), "random.png");
            imageWriter.Write(imageDrawer.Draw(simpleLayouter), "simple.png");
        }
示例#2
0
        private void DrawRectangle_Click(object sender, EventArgs e)
        {
            var   widthS = RectangleW.Text;
            var   lengthS = RectangleL.Text;
            var   offsetXS = RectangleX.Text;
            var   offsetYS = RectangleX.Text;
            float offsetX, offsetY;

            if (!float.TryParse(widthS, out var width))
            {
                return;
            }
            if (!float.TryParse(lengthS, out var length))
            {
                return;
            }

            if (!float.TryParse(offsetYS, out offsetY))
            {
                offsetY = 0;
            }
            if (!float.TryParse(offsetXS, out offsetX))
            {
                offsetX = 0;
            }

            image.AddShape(new Rectangle(offsetX, offsetY, length, width));
            Clear();
            imageDrawer.Draw(image);
        }
示例#3
0
        private void DrawRasterNew(string file, TileInfo tileInfo)
        {
            if (_needReproject)
            {
                var rl = new RasterLayerClass();
                rl.CreateFromFilePath(file);
                var props = (IRasterProps)rl.Raster;
                props.SpatialReference = _dataSpatialReference;
                var rasterGeometryProc = new RasterGeometryProcClass();
                var missing            = Type.Missing;
                rasterGeometryProc.ProjectFast(_layerSpatialReference, rstResamplingTypes.RSP_NearestNeighbor, ref missing, rl.Raster);

                // fix 9/10/2015: with projected tiles color changes and transparency is ignored.
                var image  = new Bitmap(file, true);
                var format = image.PixelFormat;
                if (format == PixelFormat.Format24bppRgb | format == PixelFormat.Format32bppArgb)
                {
                    var rasterRgbRenderer = new RasterRGBRendererClass();
                    ((IRasterStretch2)rasterRgbRenderer).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_NONE;
                    ((IRasterStretch2)rasterRgbRenderer).Background  = true;
                    rl.Renderer = rasterRgbRenderer;
                }
                // end fix 9/10/2015: with projected tiles color changes and transparency is ignored.

                rl.Draw(esriDrawPhase.esriDPGeography, _display, null);
            }
            else
            {
                using (var fs = new System.IO.FileStream(file, FileMode.Open, FileAccess.Read))
                {
                    if (fs.Length > 100)
                    {
                        var img1 = Image.FromStream(fs, true);
                        {
                            // add check if tile needs to be clipped
                            if (ClipTilesEnvelope != null)
                            {
                                if (tileInfo.Extent.MinX <ClipTilesEnvelope.XMin |
                                                          tileInfo.Extent.MaxX> ClipTilesEnvelope.XMax |
                                    tileInfo.Extent.MinY <ClipTilesEnvelope.YMin |
                                                          tileInfo.Extent.MaxY> ClipTilesEnvelope.YMax)
                                {
                                    img1 = ImageProcessor.CropImage(img1, tileInfo, ClipTilesEnvelope);
                                }
                            }

                            if (img1 != null)
                            {
                                var ms = new MemoryStream();
                                img1.Save(ms, ImageFormat.Png);
                                var bytes1 = ms.ToArray();
                                var ul     = new PointClass()
                                {
                                    X = tileInfo.Extent.MinX, Y = tileInfo.Extent.MaxY
                                };
                                var lr = new PointClass()
                                {
                                    X = tileInfo.Extent.MaxX, Y = tileInfo.Extent.MinY
                                };
                                ImageDrawer.Draw(_display, bytes1, ul, lr);
                                img1.Dispose();
                            }
                        }
                    }
                }
            }
        }