public void Draw(Graphics g) { if (isDirty) { isDirty = false; if (cachImage != null) { cachImage.Dispose(); } cachImage = new Bitmap(stageWidth, stageHeight); Graphics cg = Graphics.FromImage(cachImage); foreach (var memMapPoint in Cells) { cg.DrawImage(TileBook.GetTileImage(memMapPoint.Tile, CardSize, CardSize), memMapPoint.X, memMapPoint.Y, CardSize, CardSize); var tileConfig = ConfigData.GetTileConfig(memMapPoint.Tile); if (tileConfig.ShowBorder) { Pen pen = new Pen(Brushes.DarkRed, 1); cg.DrawRectangle(pen, memMapPoint.X, memMapPoint.Y, CardSize - 1, CardSize); pen.Dispose(); } #if DEBUG Font font = new Font("Arial", 7 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel); g.DrawString(memMapPoint.Owner.ToString(), font, Brushes.White, memMapPoint.X, memMapPoint.Y + 10); font.Dispose(); #endif } cg.Dispose(); } g.DrawImageUnscaled(cachImage, 0, 0, stageWidth, stageHeight); }
public void Init() { //50每格子 Width = Height = 30; tileArray = new TileInfo[Width, Height]; for (int i = 0; i < Width; i++) { for (int j = 0; j < Height; j++) { if ((i + j) % 5 == 1) { tileArray[i, j] = new TileInfo { CId = 3 } } ; else { tileArray[i, j] = new TileInfo { CId = 4 } }; } } MapPixelWidth = CellSize * Width; MapPixelHeight = CellSize * Height; cachedMap = new Bitmap(MapPixelWidth, MapPixelHeight); Graphics g = Graphics.FromImage(cachedMap); for (int i = 0; i < Width; i++) { for (int j = 0; j < Height; j++) { Rectangle destRect = new Rectangle(CellSize * i, CellSize * j, CellSize, CellSize); var tileImg = TileBook.GetTileImage(tileArray[i, j].CId, CellSize, CellSize); g.DrawImage(tileImg, destRect, 0, 0, CellSize, CellSize, GraphicsUnit.Pixel); } } Pen myPen = new Pen(Brushes.DarkGoldenrod, 6); //描一个金边 g.DrawRectangle(myPen, 0 + 3, 0 + 3, MapPixelWidth - 6, MapPixelHeight - 6); myPen.Dispose(); g.DrawRectangle(Pens.DarkRed, 0 + 5, 0 + 5, MapPixelWidth - 10, MapPixelHeight - 10); g.Dispose(); }