public Image DrawImage(Size size) { Bitmap returnvalue = new Bitmap(size.Width, size.Height); for (var x = 0; x < MapGrid.GridElementCollection.Length; x++) { var column = MapGrid.GridElementCollection[x]; for (var y = 0; y < column.Length; y++) { var gridElement = column[y]; var elementWidth = (int)((MapGrid.Width / MapGrid.GridElementCollection.Length) * getScaleFactorWidth(size.Width)); var elementHeight = (int)((MapGrid.Height / column.Length) * getScaleFactorHeight(size.Height)); var image = (Bitmap)MapParser.GetImageById(gridElement.ImageId); image = (Bitmap)image.GetThumbnailImage(elementWidth, elementHeight, null, IntPtr.Zero); for (var bx = 0; bx < elementWidth; bx++) { for (var by = 0; by < elementHeight; by++) { var cl = image.GetPixel(bx, by); returnvalue.SetPixel(bx + (elementWidth * x), by + (elementHeight * y), cl); } } } } return(returnvalue); }
public void Draw(Graphics g, Size screenSize, int x, int y) { int elementX = (int)Math.Floor(Math.Abs((double)(x / gridElementWidth))); int elementY = (int)Math.Floor(Math.Abs((double)(y / gridElementHeight))); int endElementX = elementX + (int)Math.Floor((double)(screenSize.Width / gridElementWidth)); int endElementY = elementY + (int)Math.Floor((double)(screenSize.Height / gridElementHeight)); int drawPositionX = x + elementX * gridElementWidth; int drawPositionY = y + elementY * gridElementHeight; if (endElementX >= MapGrid.GridElementCollection.Length - 1) { endElementX = MapGrid.GridElementCollection.Length - 1; } for (int amountX = 0; amountX + elementX <= endElementX; amountX++) { var row = MapGrid.GridElementCollection[amountX + elementX]; if (endElementY >= row.Length - 1) { endElementY = row.Length - 1; } for (var amountY = 0; amountY + elementY <= endElementY; amountY++) { var gridElement = row[amountY + elementY]; var image = (Bitmap)MapParser.GetImageById(gridElement.ImageId); //image = (Bitmap)image.GetThumbnailImage(elementWidth, elementHeight, null, IntPtr.Zero); g.DrawImageUnscaled(image, drawPositionX + amountX * gridElementWidth, drawPositionY + amountY * gridElementHeight); /* for (var bx = 0; bx < elementWidth; bx++) * { * for (var by = 0; by < elementHeight; by++) * { * var cl = image.GetPixel(bx, by); * returnvalue.SetPixel(bx + (elementWidth * x), by + (elementHeight * y), cl); * } * } */ } } }
public Image DrawImage(Size size) { Dictionary <String, Bitmap> cache = new Dictionary <string, Bitmap>(); Bitmap returnvalue = new Bitmap(size.Width, size.Height, PixelFormat.Format32bppPArgb); Graphics g = Graphics.FromImage(returnvalue); for (var x = 0; x < MapGrid.GridElementCollection.Length; x++) { var row = MapGrid.GridElementCollection[x]; for (var y = 0; y < row.Length; y++) { Bitmap image; var gridElement = row[y]; var elementWidth = (int)(Math.Ceiling((MapGrid.Width / row.Length) * getScaleFactorWidth(size.Width))); var elementHeight = (int)(Math.Ceiling((MapGrid.Height / MapGrid.GridElementCollection.Length) * getScaleFactorHeight(size.Height))); if (!cache.TryGetValue(gridElement.ImageId, out image)) { image = (Bitmap)MapParser.GetImageById(gridElement.ImageId); image = (Bitmap)CT_Helper.resizeImage(image, new Size(elementWidth, elementHeight)); cache.Add(gridElement.ImageId, image); } //image = (Bitmap)image.GetThumbnailImage(elementWidth, elementHeight, null, IntPtr.Zero); g.DrawImageUnscaled(image, elementWidth * x, elementHeight * y); /* for (var bx = 0; bx < elementWidth; bx++) * { * for (var by = 0; by < elementHeight; by++) * { * var cl = image.GetPixel(bx, by); * returnvalue.SetPixel(bx + (elementWidth * x), by + (elementHeight * y), cl); * } * } */ } } return(returnvalue); }
/// <summary> /// Erstellt die Boxen mit Bildern /// </summary> /// <param name="uiSize">Die Größe, in der die Map angezeigt werden soll</param> public void Initialize(Size uiSize) { this.Size = uiSize; //x=breitengrad (x-achse) elementBoxes = new PictureBox[MapGrid.GridElementCollection.Length][]; for (var x = 0; x < MapGrid.GridElementCollection.Length; x++) { elementBoxes[x] = new PictureBox[MapGrid.GridElementCollection[x].Length]; var column = MapGrid.GridElementCollection[x]; for (var y = 0; y < column.Length; y++) { var gridElement = column[y]; var pictureBox = new System.Windows.Forms.PictureBox(); //pictureBox.SizeMode = PictureBoxSizeMode.AutoSize; gridElementWidth = (int)((MapGrid.Width / MapGrid.GridElementCollection.Length) * ScaleFactorWidth); gridElementHeight = (int)((MapGrid.Height / column.Length) * ScaleFactorHeight); pictureBox.Width = (int)gridElementWidth; pictureBox.Height = (int)gridElementHeight; var image = MapParser.GetImageById(gridElement.ImageId); pictureBox.Image = image; //pictureBox.BorderStyle = BorderStyle.FixedSingle; pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; var boxX = gridElementWidth * x; var boxY = gridElementHeight * y; pictureBox.Left = (int)boxX; pictureBox.Top = (int)boxY; elementBoxes[x][y] = pictureBox; //Auskommentiert, um die Testausgaben der Kollision zu sehen this.Controls.Add(elementBoxes[x][y]); } } Collision = new CollisionManager(MapGrid, gridElementWidth, gridElementHeight); }