public void Generate() { for (int y = 0; y < TilesY; y++) { for (int x = 0; x < TilesX; x++) { var file = GetMinimapFileByCoords(World, StartTileX + x, StartTileY + y); Image tile; try { var blp = new Blp(file); tile = blp.GetImage(0); } catch (FileNotFoundException) { continue; } int posX = x * TileWidth; int posY = y * TileHeight; var resized = ResizeImage(tile); for (int iy = 0; iy < TileHeight; iy++) { for (int ix = 0; ix < TileWidth; ix++) { Result.SetPixel(ix + posX, iy + posY, resized.GetPixel(ix, iy)); } } } } }
private void UpdateBackground() { if (_startX == 0 && _startY == 0) { var files = Directory.GetFiles("S:\\meshReader\\Meshes\\" + _world + "\\"); var best = files.Where(f => f.EndsWith(".tile")).OrderByDescending(f => new FileInfo(f).Length).FirstOrDefault(); best = best.Substring(best.LastIndexOf('\\') + 1); var tokens = best.Split('_'); _startX = int.Parse(tokens[1]); _startY = int.Parse(tokens[2].Substring(0, tokens[2].IndexOf('.'))); } originTileLabel.Content = OriginTileX + ", " + OriginTileY; _pather = new Pather("S:\\meshReader\\Meshes\\" + _world); var wdt = new WDT("World\\Maps\\" + _world + "\\" + _world + ".wdt"); if (!wdt.IsValid || wdt.IsGlobalModel) return; const int totalX = 3; const int totalY = 3; const int tileSize = 256; var result = new Bitmap(totalX * tileSize, totalY * tileSize); for (int y = _startY - 1; y <= _startY+1; y++) { for (int x = _startX - 1; x <= _startX+1; x++) { if (!wdt.HasTile(x, y)) continue; try { var path = GetMinimapFileByCoords(_world, x, y); var xBegin = (x-(_startX-1))*tileSize; var yBegin = (y-(_startY-1))*tileSize; var image = new Blp(path).GetImage(0); var bitmap = new Bitmap(image); for (int i = 0; i < tileSize; i++) { for (int j = 0; j < tileSize; j++) result.SetPixel(xBegin + i, yBegin + j, bitmap.GetPixel(i, j)); } } catch (FileNotFoundException) { } } } // somebody needs to kill WPF developers for this bullshit var ms = new MemoryStream(); result.Save(ms, ImageFormat.Bmp); ms.Seek(0, SeekOrigin.Begin); var bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms; bi.EndInit(); canvas1.Background = new ImageBrush(bi); }
public void LoadFromContinent(string continent) { var wdt = new WDT("World\\Maps\\" + continent + "\\" + continent + ".wdt"); if (!wdt.IsValid || wdt.IsGlobalModel) return; var result = new Bitmap(pictureBox1.Width, pictureBox1.Height); for (int i = 0; i < result.Width; i++) { for (int j = 0; j < result.Height; j++) result.SetPixel(i, j, Color.FromArgb(0, 29, 40)); } int minX = 65, maxX = 0, minY = 65, maxY = 0; for (int y = 0; y < 64; y++) { for (int x = 0; x < 64; x++) { if (!wdt.HasTile(x, y)) continue; if (x < minX) minX = x; if (x > maxX) maxX = x; if (y < minY) minY = y; if (y > maxY) maxY = y; } } _totalX = maxX - minX + 1; _totalY = maxY - minY + 1; for (int y = 0; y < 64; y++) { for (int x = 0; x < 64; x++) { if (!wdt.HasTile(x, y)) continue; try { var path = GetMinimapFileByCoords(continent, x, y); var xBegin = GetXBegin(x - minX); var yBegin = GetYBegin(y - minY); var image = new Blp(path).GetImage(0); var resized = ResizeImage(image); for (int i = 0; i < resized.Width; i++) { for (int j = 0; j < resized.Height; j++) result.SetPixel(xBegin + i, yBegin + j, resized.GetPixel(i, j)); } } catch (FileNotFoundException) { } } } pictureBox1.Image = result; pictureBox1.Visible = true; }