Beispiel #1
0
        public static Bitmap mkDef()
        {
            Bitmap     def = new Bitmap(w, h);
            BitmapPlus bp  = new BitmapPlus(def);

            bp.BeginAcces();
            for (int y = 0; y < h; y++)
            {
                for (int x = 0; x < w; x++)
                {
                    bp.SetPixel(x, y, BackGround);
                }
            }
            for (int x = 0; x < w; x++)
            {
                bp.SetPixel(x, 100, Axiss);
            }
            for (int y = 75; y < 125; y++)
            {
                bp.SetPixel(100, y, Axiss);
                bp.SetPixel(200, y, Axiss);
                bp.SetPixel(300, y, Axiss);
            }
            bp.EndAccess();

            return(def);
        }
Beispiel #2
0
        public static Bitmap testSine()
        {
            int        vmax = 99;
            Bitmap     res  = mkDef();
            BitmapPlus bp   = new BitmapPlus(res);

            bp.BeginAcces();
            for (int x = 0; x < w; x++)
            {
                int val = (int)(
                    (50.0 * Math.Sin(2.0 * Math.PI * (double)x / (double)w)) +
                    (50.0 * Math.Sin(8.0 * Math.PI * (double)x / (double)w)) +
                    (50.0 * Math.Sin(4.0 * Math.PI * (double)x / (double)w))
                    );

                if (-vmax < val && val < vmax)
                {
                    bp.SetPixel(x, val + 102, SubColor);
                    bp.SetPixel(x, val + 101, SubColor);
                    bp.SetPixel(x, val + 99, SubColor);
                    bp.SetPixel(x, val + 98, SubColor);
                    bp.SetPixel(x, val + 100, MainColor);
                }
                else if (val < -vmax)
                {
                    val = -vmax;
                    bp.SetPixel(x, val + 101, SubColor);
                    bp.SetPixel(x, val + 100, MainColor);
                }
                else
                {
                    val = vmax;
                    bp.SetPixel(x, val + 99, SubColor);
                    bp.SetPixel(x, val + 100, MainColor);
                }
            }
            bp.EndAccess();

            return(res);
        }
        public void DebugDumpGridToImage(string filename, System.Drawing.Imaging.ImageFormat format)
        {
#if DEBUG
            using (Bitmap gridBitmap = new Bitmap(ColCount, RowCount))
            {
                using (BitmapPlus bmpP = new BitmapPlus(gridBitmap, System.Drawing.Imaging.ImageLockMode.ReadWrite))
                {
                    Cell cell;
                    for (int row = 0; row < RowCount; row++)
                    {
                        for (int col = 0; col < ColCount; col++)
                        {
                            cell = GetAt(row, col);
                            bmpP.SetPixel(col, row, Color.FromArgb(cell.R, cell.G, cell.B));
                        }
                    }
                }

                gridBitmap.Save(filename, format);
            }
#endif
        }
Beispiel #4
0
        public static Bitmap mkWave(
            float sin1, float sin2, float sin3, float sin4,
            float cos1, float cos2, float cos3, float cos4)
        {
            int        vmax = Int16.MaxValue;
            Bitmap     res  = mkDef();
            BitmapPlus bp   = new BitmapPlus(res);

            bp.BeginAcces();
            for (int x = 0; x < w; x++)
            {
                int val = (int)(
                    (vmax * sin1 * Math.Sin(2.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sin2 * Math.Sin(4.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sin3 * Math.Sin(6.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sin4 * Math.Sin(8.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * cos1 * Math.Cos(2.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * cos2 * Math.Cos(4.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * cos3 * Math.Cos(6.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * cos4 * Math.Cos(8.0 * Math.PI * (double)x / (double)w))
                    );

                if (val < Int16.MinValue)
                {
                    val = Int16.MinValue;
                }
                else if (Int16.MaxValue < val)
                {
                    val = vmax;
                }

                int plotval = (-val * 99 / Int16.MaxValue) + 100;

                bp.SetPixel(x, plotval, MainColor);
            }
            bp.EndAccess();

            return(res);
        }
Beispiel #5
0
        public static Bitmap mkWave(SoundData sd)
        {
            int        vmax = Int16.MaxValue;
            Bitmap     res  = mkDef();
            BitmapPlus bp   = new BitmapPlus(res);

            bp.BeginAcces();
            for (int x = 0; x < w; x++)
            {
                int val = (int)(
                    (vmax * sd.sin1 * Math.Sin(2.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.sin2 * Math.Sin(4.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.sin3 * Math.Sin(6.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.sin4 * Math.Sin(8.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.sin8 * Math.Sin(16.0 * Math.PI * (double)x / (double)w)) +

                    (vmax * sd.cos1 * Math.Cos(2.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.cos2 * Math.Cos(4.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.cos3 * Math.Cos(6.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.cos4 * Math.Cos(8.0 * Math.PI * (double)x / (double)w)) +
                    (vmax * sd.cos8 * Math.Cos(16.0 * Math.PI * (double)x / (double)w))
                    );

                #region ks1
                if (x < 0.5 * w)
                {
                    val += (int)(vmax * sd.ksin1);
                }
                else
                {
                    val -= (int)(vmax * sd.ksin1);
                }
                #endregion

                #region ks2
                if (x < 0.25 * w)
                {
                    val += (int)(vmax * sd.ksin2);
                }
                else if (x < 0.5 * w)
                {
                    val -= (int)(vmax * sd.ksin2);
                }
                else if (x < 0.75 * w)
                {
                    val += (int)(vmax * sd.ksin2);
                }
                else
                {
                    val -= (int)(vmax * sd.ksin2);
                }
                #endregion

                #region ks3
                if (x < w / 6)
                {
                    val += (int)(vmax * sd.ksin3);
                }
                else if (x < w / 3)
                {
                    val -= (int)(vmax * sd.ksin3);
                }
                else if (x < w / 2)
                {
                    val += (int)(vmax * sd.ksin3);
                }
                else if (x < 2 * w / 3)
                {
                    val -= (int)(vmax * sd.ksin3);
                }
                else if (x < 5 * w / 6)
                {
                    val += (int)(vmax * sd.ksin3);
                }
                else
                {
                    val -= (int)(vmax * sd.ksin3);
                }
                #endregion

                #region ks4
                if (x < w * 0.125)
                {
                    val += (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.25)
                {
                    val -= (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.375)
                {
                    val += (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.5)
                {
                    val -= (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.625)
                {
                    val += (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.75)
                {
                    val -= (int)(vmax * sd.ksin4);
                }
                else if (x < w * 0.875)
                {
                    val += (int)(vmax * sd.ksin4);
                }
                else
                {
                    val -= (int)(vmax * sd.ksin4);
                }
                #endregion


                if (val < Int16.MinValue)
                {
                    val = Int16.MinValue;
                }
                else if (Int16.MaxValue < val)
                {
                    val = vmax;
                }

                int plotval = (-val * 99 / Int16.MaxValue) + 100;

                bp.SetPixel(x, plotval, MainColor);
            }
            bp.EndAccess();

            return(res);
        }