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"); }
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); }
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(); } } } } } }