Пример #1
0
        /// <summary>
        /// Visualizes the Simulation using an unsafe Bitmap - fast, but with the danger of memory leaks
        /// </summary>
        /// <param name="positionMap"></param>
        /// <param name="wallMap"></param>
        /// <param name="massMap"></param>
        /// <param name="xMax"></param>
        /// <param name="yMax"></param>
        /// <returns></returns>
        public Bitmap VisualizePositionMap(double[,] positionMap, bool[,] wallMap, bool[,] addonWallMap, double[,] massMap, double[,] addonMassMap, int xMax, int yMax)
        {
            Bitmap res = new Bitmap(xMax, yMax);

            UnsafeBitmap usb = new UnsafeBitmap(res);

            usb.LockBitmap();

            for (int ix = 0; ix < xMax; ix++)
            {
                for (int iy = 0; iy < yMax; iy++)
                {
                    try
                    { //Sometimes there are array bound exceptions (after resize)
                        Color c = GenerateColor(positionMap, wallMap, addonWallMap, massMap, addonMassMap, ix, iy);
                        //res.SetPixel(ix, iy, c);

                        PixelData d = new PixelData();
                        d.red   = c.R;
                        d.green = c.G;
                        d.blue  = c.B;
                        usb.SetPixel(ix, iy, d);
                    }
                    catch (Exception)
                    {
                        return(res);
                    }
                }
            }

            _lastPosMap = positionMap;
            lastX       = xMax;
            lastY       = yMax;

            usb.UnlockBitmap();

            return(usb.Bitmap);
            //return res;
        }
Пример #2
0
        public void SetPixel(int x, int y, PixelData colour)
        {
            PixelData *pixel = PixelAt(x, y);

            *pixel = colour;
        }
Пример #3
0
        public PixelData GetPixel(int x, int y)
        {
            PixelData returnValue = *PixelAt(x, y);

            return(returnValue);
        }