private void DrawSelectedTile(Graphics viewGraphics, CanvasViewport viewport) { if (CurrentColumn < 0 || CurrentRow < 0) { return; } int x = _selectedTile.X * @interface.TileWidth; int y = _selectedTile.Y * @interface.TileHeight; PointF viewLocation = viewport.GetWorldToViewLocation(new PointF(x, y)); SizeF sizeValue = new SizeF(@interface.TileWidth * viewport.Scale, @interface.TileHeight * viewport.Scale); viewGraphics.DrawRectangle(new Pen(@interface.SelectedTileColor, 2), viewLocation.X, viewLocation.Y, sizeValue.Width, sizeValue.Height); }
public override void OnPaint(Graphics graphics, IConvertWorldView convertWorldView) { InvalidateWorldViewport(); if (WorldViewGroup.CanvasViewport.Width * WorldViewGroup.CanvasViewport.Height == 0) { graphics.Clear(Color.FromArgb(207, 207, 207)); return; } Color borderColor = Color.FromArgb(194, 194, 194); var realSize = WorldViewGroup.CanvasViewport.RealSize; Image worldBitmap = new Bitmap((int)realSize.Width, (int)realSize.Height); graphics.Clear(Color.FromArgb(207, 207, 207)); RectangleF interserctRect = GetInterserctRect(); PointF renderLocation = new PointF(PaddingLeft, PaddingTop); renderLocation = CanvasViewport.GetWorldToViewLocation(renderLocation); renderLocation.X = (renderLocation.X).GreaterOrEqualThan(0); renderLocation.Y = (renderLocation.Y).GreaterOrEqualThan(0); if (TileRender != null) { Image tileImage = TileRender.GetImage(Graphics.FromImage(worldBitmap), graphics, WorldViewGroup.CanvasViewport); int cBegin = (int)WorldViewGroup.CanvasViewport.X / TileWidth; int rBegin = (int)WorldViewGroup.CanvasViewport.Y / TileHeight; RectangleF rectCrop = new RectangleF(WorldViewGroup.CanvasViewport.X - cBegin * TileWidth - 0.5f, WorldViewGroup.CanvasViewport.Y - rBegin * TileHeight - 0.5f, WorldViewGroup.CanvasViewport.Width, WorldViewGroup.CanvasViewport.Height); graphics.DrawImageFromOtherImage(tileImage, rectCrop, new RectangleF(renderLocation, interserctRect.Size)); } WorldViewGroup.OnPaint(Graphics.FromImage(worldBitmap), convertWorldView); graphics.DrawImageFromOtherImage(worldBitmap, new RectangleF(0, 0, worldBitmap.Width, worldBitmap.Height), new RectangleF(renderLocation, interserctRect.Size)); PointF firstCorner = new PointF(PaddingLeft, PaddingTop); PointF lastCorner = new PointF(PaddingLeft + WorldViewGroup.EditorCanvas.Width * WorldViewGroup.CanvasViewport.Scale, PaddingTop + WorldViewGroup.EditorCanvas.Height * WorldViewGroup.CanvasViewport.Scale); firstCorner = CanvasViewport.GetWorldToViewLocation(firstCorner); lastCorner = CanvasViewport.GetWorldToViewLocation(lastCorner); RectangleF r = RectangleF.FromLTRB(firstCorner.X, firstCorner.Y, lastCorner.X, lastCorner.Y); graphics.DrawRectangle(new Pen(borderColor, 1), r.X, r.Y, r.Width, r.Height); }
public void OnPaintInView(Graphics viewGraphics, CanvasViewport viewViewport, IConvertWorldView convertWorldView) { foreach (var index in @interface.TilesIndex) { int col = index % @interface.TilesheetColumns; int row = index / @interface.TilesheetColumns; Rectangle rect = new Rectangle(col * @interface.TileWidth, row * @interface.TileHeight, @interface.TileWidth, @interface.TileHeight); Point viewLocation = viewViewport.GetWorldToViewLocation(new Point(col * @interface.TileWidth, row * @interface.TileHeight)).ToPoint(); Size sizeValue = new Size((int)(@interface.TileWidth * viewViewport.Scale), (int)(@interface.TileHeight * viewViewport.Scale)); var viewRect = new Rectangle(viewLocation, sizeValue); viewGraphics.DrawRectangle(new Pen(@interface.TileObjectColor, 2), viewRect); } }