Ejemplo n.º 1
0
        private static void drawPixel(bool Left, double i, double j, Color c)
        {
            if (c.a > 0)
            {
                switch (Graph3d.glass)
                {
                case Glass.None:
                    Color back = Graph.getpixel((int)i, (int)j);
                    dest.SetPixel((int)i, (int)j, Color.PutAonB(c, back));
                    break;

                case Glass.Anaglyph:
                    Color anaglyph = Left ?
                                     Graph3dDraw.AnaglyphLeft(c, (int)j, Graph.bitmap, (int)i) :
                                     Graph3dDraw.AnaglyphRight(c, (int)j, Graph.bitmap, (int)i);
                    dest.SetPixel((int)i, (int)j, anaglyph);
                    break;

                case Glass.TV3D:
                    if (!Left)
                    {
                        if (i < Graph.width)
                        {
                            back = Graph.getpixel((int)(i / 2), (int)j);
                            dest.SetPixel((int)(i / 2), (int)j, Color.PutAonB(c, back));
                        }
                    }
                    else
                    {
                        if (i >= 0)
                        {
                            back = Graph.getpixel((int)((i + Graph.width) / 2), (int)j);
                            dest.SetPixel((int)((i + Graph.width) / 2), (int)j, Color.PutAonB(c, back));
                        }
                    }
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public Bitmap Convert3DToAnaglyph(bool LeftEyeIsLeft)
        {
            Bitmap result = new Bitmap(Width / 2, Height);

            if (LeftEyeIsLeft)
            {
                for (int i = 0; i < Width / 2; i++)
                {
                    for (int j = 0; j < Height; j++)
                    {
                        Color c = GetPixel(i, j);
                        c = Graph3dDraw.AnaglyphLeft(c, j, result, i);
                        result.SetPixel(i, j, c);

                        c = GetPixel(i + Width / 2, j);
                        c = Graph3dDraw.AnaglyphRight(c, j, result, i);
                        result.SetPixel(i, j, c);
                    }
                }
            }
            else
            {
                for (int i = 0; i < Width / 2; i++)
                {
                    for (int j = 0; j < Height; j++)
                    {
                        Color c = GetPixel(i, j);
                        c = Graph3dDraw.AnaglyphRight(c, j, result, i);
                        result.SetPixel(i, j, c);

                        c = GetPixel(i + Width / 2, j);
                        c = Graph3dDraw.AnaglyphLeft(c, j, result, i);
                        result.SetPixel(i, j, c);
                    }
                }
            }

            return(result);
        }