Ejemplo n.º 1
0
        private void Redraw()
        {
            Dictionary <double, int> dict = new Dictionary <double, int>();

            bmp.LockBitmap();
            //bmp.Clear(ColorFilter.white);
            bmp.Clear(ColorFilter.black);
            for (int y = 1; y < gridHeight; y++)
            {
                double xUnitSize  = gridWidth / (double)y;
                int    totalSlots = y;
                for (int x = 0; x < totalSlots; x++)
                {
                    PixelData pd = new PixelData(0xFF, 0xFF, 0xFF);
                    colorFilter.GetColor(xUnitSize, x, totalSlots, ref pd);
                    int xp = (int)Math.Round(x * xUnitSize);
                    bmp.SetPixel(xp, y, pd);

                    //double gridX =Math.Round(x * ratio * 10);
                    //if (!dict.ContainsKey(gridX))// && dict.Count < colors.Count)
                    //{
                    //    dict.Add(gridX, dict.Count);
                    //    isNew = true;
                    //}


                    //int slot = 1;
                    //double left = y - x;
                    //int b = left % 8 != slot ? 255 : 0;
                    //int r = x % 8 != slot ? 255 : 0;
                    //int g = x % 32 != slot ? (left % 32 != slot ? 255 : 0) : 0;
                    //pd = new PixelData(r, g, b);
                }
            }
            bmp.UnlockBitmap();
            bmp.Bitmap.Save("test.png");
        }
Ejemplo n.º 2
0
        public override void GetColor(double xUnitSize, int xSlot, int xTotalSlots, ref PixelData pd)
        {
            double x = xSlot * xUnitSize;
            //double above = sortedSet.Where(val => val >= x).FirstOrDefault();
            //double below = sortedSet.Where(val => val < x).FirstOrDefault();
            //double difAbove = Math.Abs(above - x);
            //double difBelow = Math.Abs(below - x);
            //double minDif = Math.Min(difAbove, difBelow);
            int  pixelX = (int)x;
            bool isNew  = !set.ContainsKey(pixelX);

            if (isNew)
            {
                set.Add(pixelX, 1);
            }
            else
            {
                int count = set[pixelX];
                set[pixelX] = count + 1;
                int difVal = (int)(Math.Abs((int)x - x) * 256);
                int g      = (int)(xTotalSlots / (double)count * 0x80) % 0xFF;
                pd.ChangeTo(difVal, (int)(difVal / 2.0), (int)(g * 0.7));
            }
        }
Ejemplo n.º 3
0
 public void ChangeTo(PixelData pd)
 {
     this.red   = pd.red;
     this.green = pd.green;
     this.blue  = pd.blue;
 }
Ejemplo n.º 4
0
 public virtual void GetColor(double xUnitSize, int xSlot, int xTotalSlots, ref PixelData pd)
 {
 }
Ejemplo n.º 5
0
        public void SetPixel(int x, int y, PixelData color)
        {
            PixelData *pixel = PixelAt(x, y);

            *pixel = color;
        }
Ejemplo n.º 6
0
        public PixelData GetPixel(int x, int y)
        {
            PixelData returnValue = *PixelAt(x, y);

            return(returnValue);
        }