Example #1
0
        public static void Main()
        {
            GD image = new GD( 256 + 384, 384, true );

            bool saveAlpha = image.SaveAlpha;

            GDColor white = image.ColorAllocate( 255, 255, 255 );

            image.FilledRectangle( 0, 0, image.Width, image.Height, white );

            /* Set transparent color. */
            image.ColorTransparent( white );

            GD import = new GD( GD.FileType.Png, "../Img/demoin.png" );

            /* Now copy, and magnify as we do so */
            image.CopyResampled( import, 32, 32, 0, 0, 192, 192, 255, 255 );

            /* Now display variously rotated space shuttles in a circle of our own */
            for( int a = 0; ( a < 360 ); a += 45 )
            {
             		    	int cx = (int) Math.Floor( Math.Cos ( a * .0174532925 ) * 127 );
               		       	int cy = (int) Math.Floor( -Math.Sin ( a * .0174532925 ) * 127 );

             		   	image.CopyRotated( import,
                    256 + 192 + cx, 192 + cy,
                    0, 0, import.Width, import.Height, a );
            }

            GDColor red = image.ColorAllocate( 255, 0, 0 );
              			GDColor green = image.ColorAllocate( 0, 255, 0 );
              			GDColor blue = image.ColorAllocate( 0, 0, 255 );

              			/* Fat Rectangle */
              			image.SetThickness( 4 );
              			image.Line( 16, 16, 240, 16, green );
              			image.Line( 240, 16, 240, 240, green );
              			image.Line( 240, 240, 16, 240, green );
              			image.Line( 16, 240, 16, 16, green );
              			image.SetThickness( 1 );

              			/* Circle */
              			image.Arc( 128, 128, 60, 20, 0, 720, blue );

              			/* Arc */
              			image.Arc( 128, 128, 40, 40, 90, 270, blue );
              			/* Flood fill: doesn't do much on a continuously
             	variable tone jpeg original. */
            image.Fill( 8, 8, blue );

            /* Polygon */
            ArrayList list = new ArrayList();
            list.Add( new Point( 64, 0 ) );
            list.Add( new Point( 0, 128 ) );
            list.Add( new Point( 128, 128 ) );
            image.FilledPolygon( list, green );

             /* 2.0.12: Antialiased Polygon */
              			image.SetAntiAliased( green );
              			for( int i = 0; ( i < 3 ); i++ )
               			{
                ((Point) list[i]).X += 128;
            }
            image.FilledPolygon( list, GD.GD_ANTIALIASED );

            /* Brush. A fairly wild example also involving a line style! */
              	int[] style = new int[8];
              		GD brush = new GD( 16, 16, true );
              		brush.CopyResized( import,
                0, 0, 0, 0,
                brush.Width, brush.Height,
                import.Width, import.Height );
              	image.SetBrush( brush );

              	/* With a style, so they won't overprint each other.
            Normally, they would, yielding a fat-brush effect. */
              	style[0] = 0;
              	style[1] = 0;
              	style[2] = 0;
              	style[3] = 0;
              	style[4] = 0;
              	style[5] = 0;
              	style[6] = 0;
              	style[7] = 1;
              	image.SetStyle( style );

              	/* Draw the styled, brushed line */
              	image.Line( 0, 255, 255, 0, GD.GD_STYLED_BRUSHED );

              			/* Text (non-truetype; see gdtestft for a freetype demo) */
              			ArrayList fonts = new ArrayList();
            fonts.Add( new Font( Font.Type.Tiny ) );
              			fonts.Add( new Font( Font.Type.Small ) );
              			fonts.Add( new Font( Font.Type.MediumBold ) );
              			fonts.Add( new Font( Font.Type.Large ) );
              			fonts.Add( new Font( Font.Type.Giant ) );

              			int y = 0;
              			for( int i = 0; (i <= 4); i++ )
              			{
                    image.String( ((Font) fonts[i]), 32, 32 + y, "hi", red );
                    y += ((Font) fonts[i]).Height();
              			}

              			y = 0;
              			for( int i = 0; (i <= 4); i++ )
              			{
                image.StringUp( ((Font) fonts[i]), 64 + y, 64, "hi", red );
                y += ((Font) fonts[i]).Height();
              			}

             			/* Random antialiased lines; coordinates all over the image,
                but the output will respect a small clipping rectangle */
              			image.SetClip( 0, image.Height - 100, 100, image.Height );

              			/* Fixed seed for reproducibility of results */
              			Random ran = new Random( 100 );

            for( int i = 0; (i < 100); i++ )
            {
                int x1 = ran.Next() % image.Width;
                int y1 = ran.Next() % image.Height;
                int x2 = ran.Next() % image.Width;
                int y2 = ran.Next() % image.Height;

                image.SetAntiAliased( white );
                image.Line( x1, y1, x2, y2, GD.GD_ANTIALIASED );
            }

            /* Make output image interlaced (progressive, in the case of JPEG) */
            image.Interlace = true;

            image.Save( GD.FileType.Png, "demoout.png", 1 );

              			/* 2.0.12: also write a paletteized version */
            image.TrueColorToPalette( 0, 256 );

            image.Save( GD.FileType.Png, "demooutp.png", 1 );

            using(FileStream fs = File.OpenWrite(@"stream.jpg"))
            {
                image.Save(Ntx.GD.GD.FileType.Jpeg, (System.IO.Stream)fs,100);
                fs.Close();
            }

            using(FileStream fs = File.OpenWrite(@"stream.png"))
            {
                image.Save(Ntx.GD.GD.FileType.Png, (System.IO.Stream)fs,100);
                fs.Close();
            }

            using(FileStream fs = File.OpenWrite(@"stream1.jpg"))
            {
                image.Save((System.IO.Stream)fs);
                fs.Close();
            }

            image.Save("determinetype.jpg");

            /* Free resources */
            brush.Dispose();
            import.Dispose();
            image.Dispose();

            TestGif();
            MakeAnimGif();
        }
Example #2
0
        // Ntx.GD.Tests.Test();
        public static void Test()
        {
            GD image = new GD(256 + 384, 384, true);

            bool saveAlpha = image.SaveAlpha;

            GDColor white = image.ColorAllocate(255, 255, 255);

            image.FilledRectangle(0, 0, image.Width, image.Height, white);

            /* Set transparent color. */
            image.ColorTransparent(white);

            GD import = new GD(GD.FileType.Png, MapPath("Img/demoin.png"));

            /* Now copy, and magnify as we do so */
            image.CopyResampled(import, 32, 32, 0, 0, 192, 192, 255, 255);

            /* Now display variously rotated space shuttles in a circle of our own */
            for (int a = 0; (a < 360); a += 45)
            {
                int cx = (int)Math.Floor(Math.Cos(a * .0174532925) * 127);
                int cy = (int)Math.Floor(-Math.Sin(a * .0174532925) * 127);

                image.CopyRotated(import,
                                  256 + 192 + cx, 192 + cy,
                                  0, 0, import.Width, import.Height, a);
            }

            GDColor red   = image.ColorAllocate(255, 0, 0);
            GDColor green = image.ColorAllocate(0, 255, 0);
            GDColor blue  = image.ColorAllocate(0, 0, 255);

            /* Fat Rectangle */
            image.SetThickness(4);
            image.Line(16, 16, 240, 16, green);
            image.Line(240, 16, 240, 240, green);
            image.Line(240, 240, 16, 240, green);
            image.Line(16, 240, 16, 16, green);
            image.SetThickness(1);

            /* Circle */
            image.Arc(128, 128, 60, 20, 0, 720, blue);

            /* Arc */
            image.Arc(128, 128, 40, 40, 90, 270, blue);

            /* Flood fill: doesn't do much on a continuously
             *  variable tone jpeg original. */
            image.Fill(8, 8, blue);

            /* Polygon */
            ArrayList list = new ArrayList();

            list.Add(new Point(64, 0));
            list.Add(new Point(0, 128));
            list.Add(new Point(128, 128));
            image.FilledPolygon(list, green);

            /* 2.0.12: Antialiased Polygon */
            image.SetAntiAliased(green);
            for (int i = 0; (i < 3); i++)
            {
                ((Point)list[i]).X += 128;
            }
            image.FilledPolygon(list, GD.GD_ANTIALIASED);


            /* Brush. A fairly wild example also involving a line style! */
            int[] style = new int[8];
            GD    brush = new GD(16, 16, true);

            brush.CopyResized(import,
                              0, 0, 0, 0,
                              brush.Width, brush.Height,
                              import.Width, import.Height);
            image.SetBrush(brush);

            /* With a style, so they won't overprint each other.
             * Normally, they would, yielding a fat-brush effect. */
            style[0] = 0;
            style[1] = 0;
            style[2] = 0;
            style[3] = 0;
            style[4] = 0;
            style[5] = 0;
            style[6] = 0;
            style[7] = 1;
            image.SetStyle(style);

            /* Draw the styled, brushed line */
            image.Line(0, 255, 255, 0, GD.GD_STYLED_BRUSHED);

            /* Text (non-truetype; see gdtestft for a freetype demo) */
            ArrayList fonts = new ArrayList();

            fonts.Add(new Font(Font.Type.Tiny));
            fonts.Add(new Font(Font.Type.Small));
            fonts.Add(new Font(Font.Type.MediumBold));
            fonts.Add(new Font(Font.Type.Large));
            fonts.Add(new Font(Font.Type.Giant));

            int y = 0;

            for (int i = 0; (i <= 4); i++)
            {
                image.String(((Font)fonts[i]), 32, 32 + y, "hi", red);
                y += ((Font)fonts[i]).Height();
            }

            y = 0;
            for (int i = 0; (i <= 4); i++)
            {
                image.StringUp(((Font)fonts[i]), 64 + y, 64, "hi", red);
                y += ((Font)fonts[i]).Height();
            }


            /* Random antialiased lines; coordinates all over the image,
             *  but the output will respect a small clipping rectangle */
            image.SetClip(0, image.Height - 100, 100, image.Height);

            /* Fixed seed for reproducibility of results */
            Random ran = new Random(100);

            for (int i = 0; (i < 100); i++)
            {
                int x1 = ran.Next() % image.Width;
                int y1 = ran.Next() % image.Height;
                int x2 = ran.Next() % image.Width;
                int y2 = ran.Next() % image.Height;

                image.SetAntiAliased(white);
                image.Line(x1, y1, x2, y2, GD.GD_ANTIALIASED);
            }

            /* Make output image interlaced (progressive, in the case of JPEG) */
            image.Interlace = true;

            image.Save(GD.FileType.Png, "demoout.png", 1);

            /* 2.0.12: also write a paletteized version */
            image.TrueColorToPalette(0, 256);

            image.Save(GD.FileType.Png, "demooutp.png", 1);

            using (FileStream fs = File.OpenWrite(@"stream.jpg"))
            {
                image.Save(Ntx.GD.GD.FileType.Jpeg, (System.IO.Stream)fs, 100);
                fs.Close();
            }

            using (FileStream fs = File.OpenWrite(@"stream.png"))
            {
                image.Save(Ntx.GD.GD.FileType.Png, (System.IO.Stream)fs, 100);
                fs.Close();
            }

            using (FileStream fs = File.OpenWrite(@"stream1.jpg"))
            {
                image.Save((System.IO.Stream)fs);
                fs.Close();
            }

            image.Save("determinetype.jpg");

            /* Free resources */
            brush.Dispose();
            import.Dispose();
            image.Dispose();

            TestGif();
            MakeAnimGif();
        }