상속: MonoBehaviour
예제 #1
0
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (Painter game = new Painter())
     {
         game.Run();
     }
 }
        public void Painter_should_paint_tank_with_given_color()
        {
            var painter = new Painter();
            var tank = new Tank("REG");
            painter.Paint(tank, Color.DarkOliveGreen);

            Assert.AreEqual(Color.DarkOliveGreen, tank.Color);
        }
        public void Painter_should_paint_car_with_given_color()
        {
            var painter = new Painter();
            var car = new Car("REG", CarType.Sedan);
            painter.Paint(car, Color.HotPink);

            Assert.AreEqual(Color.HotPink, car.Color);
        }
        public void Painter_should_paint_bus_with_given_color()
        {
            var painter = new Painter();
            var bus = new Bus("REG");
            painter.Paint(bus, Color.HotPink);

            Assert.AreEqual(Color.HotPink, bus.Color);
        }
예제 #5
0
 protected override void OnPaint(PaintEventArgs e)
 {
     if (Services == null)
         return;
     GetStyleStack().PushStyle(StyleClass);
     var painter = new Painter(this, e.Graphics, styleStack);
     painter.Paint();
     GetStyleStack().PopStyle();
 }
예제 #6
0
	void CreateWindow ()
	{
		Video.WindowIcon ();
		Video.WindowCaption = "animation viewer";
		Surface surf = Video.SetVideoModeWindow (320, 200);

		Mouse.ShowCursor = false;

		painter = new Painter (surf, 100);
		SpriteManager.AddToPainter (painter);
	}
예제 #7
0
파일: DemoForm.cs 프로젝트: Rungee/Fog.NET
        public DemoForm()
        {
            InitializeComponent();

            m_bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            m_image = new Image(m_bitmap);
            m_painter = new Painter(m_image);

            pictureBox1.Image = m_bitmap;

            btnClear_Click(this, null);
        }
예제 #8
0
	void CreateWindow ()
	{
		window = new Gtk.Window ("animation viewer");
		window.SetDefaultSize (640, 480);

		drawing_area = new Gtk.DrawingArea ();

		painter = new Painter (drawing_area, 200);
		painter.Add (Layer.Background, DrawFrame);

		window.Add (drawing_area);
		window.ShowAll ();
	}
예제 #9
0
        private void drawAufgabeFromDot(object sender, MouseEventArgs e)
        {
            float  iX, iY;
            string strIFS = "";

            iX = (e.X * (_coord.MaxX - _coord.MinX)) / (float)ImageWidth + _coord.MinX;
            iY = (e.Y * (_coord.MaxY - _coord.MinY)) / (float)ImageHeight + _coord.MinY;

            // IFS laden
            switch (iKlicks)
            {
            default:
                strIFS  = "IFS_TEST_Invers.IFS";
                iKlicks = 0;
                break;
            }
            iKlicks++;
            _ifs = GLabReader.ReadIfsFromFile("..\\..\\IFS5\\" + strIFS);
            //test = Microsoft.Xna.Framework.Matrix.Invert(_ifs[0]);
            //test = Microsoft.Xna.Framework.Matrix.Invert(_ifs[1]);
            //test = Microsoft.Xna.Framework.Matrix.Invert(_ifs[2]);
            Logger.Instance.LogInfo("IFS:\t" + strIFS);
            //readIfsProbabilities();

            // Create a new raster image for drawing
            _image = new Image <Rgb, byte>(ImageWidth, ImageHeight, new Rgb(Color.White));

            // Painter initialisieren mit neuem Koordinatensystem
            _coord   = new CoordinateSystem(_ifs.CoordinateSystem.MinX, _ifs.CoordinateSystem.MaxX, _ifs.CoordinateSystem.MinY, _ifs.CoordinateSystem.MaxY);
            _painter = new Painter(ref _image, _coord);
            _frame.SetImage(_image);
            _painter.PaintCoordinateSystem(16, Color.Red);

            // Punkt zeichnen
            Aufgabe();
        }
예제 #10
0
        public override void Paint(Level level)
        {
            Painter.Rect(level, this, 3, Tile.Chasm);
            Painter.Rect(level, this, 4, Tile.Chasm);

            var c = Rnd.Int(1, 3);
            var d = Rnd.Chance() ? PlatformController.ClockWise : PlatformController.CounterClockWise;

            for (var i = 0; i < c; i++)
            {
                var platform = new MovingPlatform();
                platform.StartingStep = i;

                if (i == 0)
                {
                    platform.Position = new Vector2(Left + 3, Top + 3) * 16;
                }
                else if (i == 2 || (i == 1 && c == 2))                     // For symetry
                {
                    platform.Position     = new Vector2(Right - 4, Bottom - 4) * 16;
                    platform.StartingStep = 2;
                }
                else if (i == 1)
                {
                    platform.Position = new Vector2(Right - 4, Top + 3) * 16;
                }
                else if (i == 3)
                {
                    platform.Position = new Vector2(Left + 3, Bottom - 4) * 16;
                }

                platform.Controller = d;

                level.Area.Add(platform);
            }
        }
예제 #11
0
            // ReSharper disable once InconsistentNaming
            public static bool EnterToggle(OverlayMenu __instance, KIconToggleMenu.ToggleInfo toggle_info)
            {
                try
                {
                    bool toggleMaterialColor = Traverse.Create(toggle_info).Field <HashedString>("simView").Value
                                               == IDs.MaterialColorOverlayHS;

                    if (!toggleMaterialColor)
                    {
                        return(true);
                    }

                    State.Config.Enabled = !State.Config.Enabled;

                    Painter.Refresh();

                    return(false);
                }
                catch (Exception e)
                {
                    State.Common.Logger.LogOnce("EnterToggle failed.", e);
                    return(true);
                }
            }
예제 #12
0
 public virtual void DrawSelected(Painter painter)
 {
     Draw(painter);
 }
예제 #13
0
 private void cboMallar_SelectedIndexChanged( object sender, EventArgs e )
 {
     if ( _painter != null )
         _painter.Dispose();
     _painter = new Painter(
         300,
         (cboMallar.SelectedItem as Template).Page,
         null);
     printPreview();
 }
예제 #14
0
 protected override double FileSizeTolerance => 0; // SkiaSharp is the baseline, no deviations allowed
 protected override void DrawToStream <TContent>(Painter <SKCanvas, TContent, SKColor> painter,
                                                 System.IO.Stream stream, float textPainterCanvasWidth, TextAlignment alignment) =>
 painter.DrawAsStream(textPainterCanvasWidth, alignment)?.CopyTo(stream);
예제 #15
0
 /// <summary>
 /// Removes the item from the console output
 /// </summary>
 public void Hide()
 {
     Painter.Write("   ", X, Y);
 }
예제 #16
0
        public override void Paint(Level level)
        {
            base.Paint(level);
            Painter.Fill(level, this, 1, Tile.Chasm);
            Painter.DrawLine(level, new Dot(Left + 1, Top + 1), new Dot(Left + 1, Bottom - 1), Tiles.RandomFloor(), true);
            Painter.DrawLine(level, new Dot(Right - 1, Top + 1), new Dot(Right - 1, Bottom - 1), Tiles.RandomFloor(), true);

            var ty = Rnd.Int(Top + 2, Bottom - 2);

            if (Rnd.Chance())
            {
                ty = Top + GetHeight() / 2;
            }

            for (var i = 0; i < 2; i++)
            {
                if (Rnd.Chance())
                {
                    var tty = Rnd.Int(Top + 2, Bottom - 2);
                    Painter.DrawLine(level, new Dot(Left + 1, tty), new Dot(Right - 1, tty), Tile.FloorD);
                }
            }

            Painter.DrawLine(level, new Dot(Left + 1, ty), new Dot(Right - 1, ty), Tiles.RandomFloor(), true);

            if (Connected.Count == 1)
            {
                ty = Rnd.Int(Top + 2, Bottom - 2);

                if (Connected.Values.First().X == Left)
                {
                    PlaceButton(level, new Dot(Right - 1, ty));
                }
                else
                {
                    PlaceButton(level, new Dot(Left + 1, ty));
                }
            }

            var s  = Rnd.Int(2, 4);
            var xm = Rnd.Int(0, s);

            #region Wave Generator
            var xsmooth = Rnd.Chance(30);
            var xmod    = Rnd.Float(s * 8, s * 16);
            var ysmooth = Rnd.Chance(30);
            var ymod    = Rnd.Chance(30) ? xmod : Rnd.Float(s * 32, s * 64);

            var fn = new Func <int, int, float>((x, y) => {
                var t = 0f;

                if (!xsmooth)
                {
                    t += (float)Math.Cos(x / xmod);
                }

                if (!ysmooth)
                {
                    t += (float)Math.Sin(y / ymod);
                }

                return(MathUtils.Mod(t * 3, 3));
            });
            #endregion

            for (var x = Left + 3 + xm; x < Right - 2; x += s)
            {
                Place(level, x, Top + 1, 2, fn(x, Top + 1));
            }

            for (var x = Left + 3 + xm; x < Right - 2; x += s)
            {
                Place(level, x, Bottom - 1, 6, fn(x, Bottom - 1));
            }
        }
예제 #17
0
 public virtual void OnMouseMove(Vector2 mousePos, Painter painter, ViewportType viewportType, Camera camera, Collider collider, Rect bounds)
 {
 }
예제 #18
0
파일: Program.cs 프로젝트: yudidi/TestDll
        static void TestDrawLine()
        {
            Canvas canvas = new Canvas(showForm1.CreateGraphics());
            Painter painter = new Painter(canvas);

            Pen pen = new Pen(Color.Red, 2.5f);
            painter.DrawLine(pen, 5, 5, 100, 100);

            canvas.g = null;
        }
예제 #19
0
		void Paint (WidgetType widgetType, Rectangle bounds, IDeviceContext dc, TransparencyType transparencyType, Color background, DeviceContextType deviceContextType, Rectangle clippingArea, Painter painter, Rectangle excludedArea)
		{
			Rectangle painted_area = Rectangle.Intersect (bounds, clippingArea);
			if (painted_area.Width == 0 || painted_area.Height == 0)
				return;
			painted_area.Offset (-bounds.X, -bounds.Y);
			excludedArea.Offset (-bounds.X, -bounds.Y);
			GdkDrawablePointer drawable = gdk_pixmap_new (IntPtr.Zero, bounds.Width, bounds.Height, 24);
			painter.AttachStyle (widgetType, drawable, this);
			GdkPixbufPointer pixbuf;
			IntPtr pixel_data;
			int rowstride;
			GdkGCPointer gc = gdk_gc_new (drawable);
			GdkColor color = new GdkColor (background);
			gdk_gc_set_rgb_fg_color (gc, ref color);
			Paint (drawable, gc, bounds, widgetType, out pixbuf, out pixel_data, out rowstride, painted_area, painter, excludedArea);
			GdkPixbufPointer white_pixbuf = IntPtr.Zero;
			IntPtr white_pixel_data = IntPtr.Zero;
			int white_rowstride = 0;
			GdkColor white_color = new GdkColor();
			if (transparencyType == TransparencyType.Alpha) {
				white_color.red = guint16.MaxValue;
				white_color.green = guint16.MaxValue;
				white_color.blue = guint16.MaxValue;
				gdk_gc_set_rgb_fg_color (gc, ref white_color);
				Paint (drawable, gc, bounds, widgetType, out white_pixbuf, out white_pixel_data, out white_rowstride, painted_area, painter, excludedArea);
			}
			g_object_unref (gc);
			unsafe {
				byte* row = (byte*)pixel_data;
				byte* pixel;
				byte* white_row = (byte*)white_pixel_data;
				byte* white_pixel;

				for (int row_index = 0; row_index < painted_area.Height; row_index++) {
					pixel = row;
					white_pixel = white_row;
					for (int pixel_index = 0; pixel_index < painted_area.Width; pixel_index++) {
						const int GdkRedOffset = 0;
						const int GdkGreenOffset = 1;
						const int GdkBlueOffset = 2;
						const int BitmapAlphaOffset = 3;
						const int BitmapRedOffset = 2;
						const int BitmapBlueOffset = 0;
						switch (transparencyType) {
						case TransparencyType.Alpha:
							pixel [BitmapAlphaOffset] = (byte)(pixel [GdkRedOffset] - white_pixel [GdkRedOffset] + byte.MaxValue);
							break;
						case TransparencyType.Color:
							if (
								pixel [GdkRedOffset] == background.R &&
								pixel [GdkGreenOffset] == background.G &&
								pixel [GdkBlueOffset] == background.B) {
								const int AlphaFullyTransparent = 0;
								pixel [BitmapAlphaOffset] = AlphaFullyTransparent;
							}
							break;
						}

						byte temporary = pixel [GdkRedOffset];
						pixel [BitmapBlueOffset] = pixel [GdkBlueOffset];
						pixel [BitmapRedOffset] = temporary;

						const int PixelSize = 4;
						pixel += PixelSize;
						white_pixel += PixelSize;
					}
					row += rowstride;
					white_row += white_rowstride;
				}
			}
			if (transparencyType == TransparencyType.Alpha)
				g_object_unref (white_pixbuf);
			g_object_unref (drawable);
			Bitmap bitmap = new Bitmap (painted_area.Width, painted_area.Height, rowstride, PixelFormat.Format32bppPArgb, pixel_data);
			Graphics g;
			bool graphics_is_from_hdc = false;
			switch (deviceContextType) {
			case DeviceContextType.Graphics:
				g = (Graphics)dc;
				break;
			case DeviceContextType.Native:
				g = Graphics.FromHdc (dc.GetHdc ());
				break;
			default:
				g = dc as Graphics;
				if (g == null) {
					graphics_is_from_hdc = true;
					g = Graphics.FromHdc (dc.GetHdc ());
				} else
					graphics_is_from_hdc = false;
				break;
			}
			painted_area.Offset (bounds.X, bounds.Y);
			g.DrawImage (bitmap, painted_area.Location);
			switch (deviceContextType) {
			case DeviceContextType.Graphics:
				break;
			case DeviceContextType.Native:
				g.Dispose ();
				dc.ReleaseHdc ();
				break;
			default:
				if (graphics_is_from_hdc) {
					g.Dispose ();
					dc.ReleaseHdc ();
				}
				break;
			}
			bitmap.Dispose ();
			g_object_unref (pixbuf);
		}
예제 #20
0
 public ManagerPlanet(Painter paint)
 {
     delPlanets = new List<BasePlanet>();
     this.paint = paint;
     planets = new HashSet<BasePlanet>();
     ellipses =  new List<Ellipse>();
     delEllipses =  new List<Ellipse>();
     paint.setEllipseLists(ref ellipses, ref delEllipses);
 }
예제 #21
0
		/// <summary>
		/// Initializes a new instance of the <see cref="NuGenSketchCanvas"/> class.
		/// </summary>
		/// <param name="hWnd">Specifies the handle of the window to associate.</param>
		/// <param name="serviceProvider"><para>Requires:</para>
		/// <para><see cref="INuGenButtonStateService"/></para>
		/// <para><see cref="INuGenControlStateService"/></para>
		///	<para><see cref="INuGenButtonLayoutManager"/></para>
		///	<para><see cref="INuGenButtonRenderer"/></para>
		/// <para><see cref="INuGenComboBoxRenderer"/></para>
		/// <para><see cref="INuGenDirectorySelectorRenderer"/></para>
		/// <para><see cref="INuGenImageListService"/></para>
		/// <para><see cref="INuGenPanelRenderer"/></para>
		/// <para><see cref="INuGenProgressBarLayoutManager"/></para>
		/// <para><see cref="INuGenProgressBarRenderer"/></para>
		/// <para><see cref="INuGenScrollBarRenderer"/></para>
		/// <para><see cref="INuGenSwitchButtonLayoutManager"/></para>
		/// <para><see cref="INuGenSwitchButtonRenderer"/></para>
		/// <para><see cref="INuGenTextBoxRenderer"/></para>
		/// <para><see cref="INuGenTrackBarRenderer"/></para>
		/// <para><see cref="INuGenThumbnailLayoutManager"/></para>
		/// <para><see cref="INuGenThumbnailRenderer"/></para>
		/// <para><see cref="INuGenToolStripRenderer"/></para>
		/// <para><see cref="INuGenValueTrackerService"/></para>
		/// </param>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="serviceProvider"/> is <see langword="null"/>.</para>
		/// </exception>
		/// <exception cref="ArgumentException">
		/// <para>
		///		<paramref name="hWnd"/> does not represent a window.
		/// </para>
		/// </exception>
		public NuGenSketchCanvas(IntPtr hWnd, INuGenServiceProvider serviceProvider)
		{
			if (!User32.IsWindow(hWnd))
			{
				throw new ArgumentException(string.Format(Resources.Argument_InvalidHWnd, hWnd.ToInt32()));
			}

			if (serviceProvider == null)
			{
				throw new ArgumentNullException("serviceProvider");
			}

			_hWnd = hWnd;
			_serviceProvider = serviceProvider;
			_painter = new Painter(this);
			_msgFilter = new MessageFilter(_hWnd);
			_msgFilter.MouseDown += _msgFilter_MouseDown;
			_msgFilter.MouseMove += _msgFilter_MouseMove;
			_msgFilter.MouseUp += _msgFilter_MouseUp;
			_msgFilter.Paint += _msgFilter_Paint;

			_showPointerTimer = new Timer();
			_showPointerTimer.Interval = 50;
			_showPointerTimer.Tick += _showPointerTimer_Tick;
		}
예제 #22
0
        public MainWindow()
        {
            InitializeComponent();
            this.Background = Brushes.Black;
            //canvas.Background = Brushes.Black;
            Painter painter = new Painter(canvas);
            manager = new ManagerPlanet(painter);
            Vector startCord = new Vector(canvas.Width / 2, canvas.Height / 2);
            planet = new BasePlanet(startCord);
            //manager.AddPlanet(planet);
            //manager.AddPlanet(new BasePlanet(new Coord(150, 980), new Coord(3050, 0), Brushes.Red, 2, 7));
            //manager.AddPlanet(new BasePlanet(new Coord(700, 400), new Coord(0, 1500), Brushes.Blue, 1, 5));
            //manager.AddPlanet(new BasePlanet(new Coord(1000, 400), new Coord(0, 0), Brushes.Gold, 100000, 25));
            //manager.AddPlanet(new BasePlanet(new Coord(850, 500), new Coord(-50, 30), Brushes.SteelBlue, 100, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(50, 800), new Coord(100, 40), Brushes.White, 1, 4));
            //manager.AddPlanet(new BasePlanet(new Coord(350, 100), new Coord(-30, 300), Brushes.Silver, 3, 1));

            //manager.AddPlanet(new BasePlanet(new Coord(600, 600), new Coord(100, 100), Brushes.Red, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(1200, 600), new Coord(200, -100), Brushes.Yellow, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 300), new Coord(310, 0), Brushes.Violet, 300, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 900), new Coord(410, 0), Brushes.MintCream, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 600), new Coord(300, 0), Brushes.MintCream, 300, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(150, 980), new Coord(500, 0), Brushes.Red, 2, 7));
            //manager.AddPlanet(new BasePlanet(new Coord(400, 400), new Coord(300, 0), Brushes.Blue, 1, 5));
            //manager.AddPlanet(new BasePlanet(new Coord(1000, 400), new Coord(0, 0), Brushes.Gold, 100000, 25));
            //manager.AddPlanet(new BasePlanet(new Coord(850, 500), new Coord(900, 0), Brushes.SteelBlue, 100, 10));
            Random rand = new Random();
            rand.Next();
            for (int i = 0; i < 100; i++)
            {
                manager.AddPlanet(new BasePlanet(new Vector(rand.Next(0, 700), rand.Next(0, 400)), new Vector(rand.Next(2000, 5000), rand.Next(2000, 5000)), Brushes.Red, rand.Next(10, 10), 3));
            }
            manager.AddPlanet(new BasePlanet(new Vector(350, 200), new Vector(0, 0), Brushes.Yellow, -1000, 10));
            manager.AddPlanet(new BasePlanet(new Vector(450, 200), new Vector(0, 0), Brushes.Yellow, 10000, 10));

            //manager.AddPlanet(new BasePlanet(new Coord(600, 600), new Coord(0, 3500), Brushes.Red, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(1200, 600), new Coord(0, -3500), Brushes.Yellow, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 300), new Coord(-3500, 0), Brushes.Violet, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 900), new Coord(3500, 0), Brushes.MintCream, 10, 10));
            //manager.AddPlanet(new BasePlanet(new Coord(900, 600), new Coord(0, 0), Brushes.Blue, 3000, 15));
            manager.UpdatePlanets();
            manager.DisplayPlanets();
        }
예제 #23
0
파일: Program.cs 프로젝트: yudidi/TestDll
        static void TestFillPie()
        {
            Canvas canvas = new Canvas(showForm1.CreateGraphics());
            Painter painter = new Painter(canvas);

            Brush blueBrush = new SolidBrush(Color.Blue);
            Rectangle fanRect = new Rectangle(100, 100, 50, 50);
            painter.FillPie(blueBrush, fanRect, 0, 60);

            canvas.g = null;
        }
예제 #24
0
파일: Program.cs 프로젝트: yudidi/TestDll
        static void TestDrawRectangle()
        {
            Canvas canvas = new Canvas(showForm1.CreateGraphics());
            Painter painter = new Painter(canvas);

            Pen pen = new Pen(Color.Blue);
            Rectangle rect = new Rectangle(200, 200, 50, 50);
            painter.DrawRectangle(pen, rect);

            canvas.g = null;
        }
예제 #25
0
        private void ResetColor()
        {
            Painter painter = new Painter(canvas);

            painter.ResetColors(drawer.Graph);
        }
예제 #26
0
파일: Program.cs 프로젝트: yudidi/TestDll
 static void TestClear()
 {
     Canvas canvas = new Canvas(showForm1.CreateGraphics());
     Painter painter = new Painter(canvas);
     painter.Clear(showForm1.BackColor);
     canvas.g = null;
 }
예제 #27
0
		void Paint (WidgetType widgetType, Rectangle bounds, IDeviceContext dc, Rectangle clippingArea, Painter painter)
		{
			Paint (widgetType, bounds, dc, TransparencyType.Alpha, Color.Black, DeviceContextType.Native, clippingArea, painter, Rectangle.Empty);
		}
예제 #28
0
        public ExpansionEditor(ExpansionKrystal krystal)
        {
            InitializeComponent();

            _newEditorState = _oldEditorState = EditorState.FixedOutput;
            _fixedInputPointsIndex = -1;
            _fixedOutputPointsIndex = -1;
            _inputPlanetIndex = -1;
            _outputPlanetIndex = -1;

            this.FieldPanel.MouseDown += new MouseEventHandler(FieldPanel_MouseDown);

            _outputKrystal = krystal;
            if(string.IsNullOrEmpty(_outputKrystal.Name))
                _outputKrystal.Name = K.UntitledKrystalName;
            _expander = _outputKrystal.Expander;

            _strandNodeList = krystal.StrandNodeList();
            _painter = new Painter(_strandNodeList);

            SetStatusText();
            SetTreeView();
            LoadGametesIntoEditor();
            DisableAllSaving();

            _fieldPanelGraphicsBuffer = _bufferedGraphicsContext.Allocate(FieldPanel.CreateGraphics(), FieldPanel.DisplayRectangle);
            _painter.DrawBackground(_fieldPanelGraphicsBuffer.Graphics);

            PointGroupParameters.InitSamplePanel(_painter._inputDotSize, _painter._outputDotSize, _painter._theLinePen, _painter._theOutputFillBrush);
            PointGroupParameters.UpdateFieldEditor += new PointGroupParameters.PointGroupParametersChangedHandler(PointGroupParametersChangedDelegate);

            ZoomComboBox.SelectedIndex = 4;
        }
예제 #29
0
 public virtual void ModifyPainter(Level level, Painter painter)
 {
     level?.Variant?.ModifyPainter(painter);
 }
				public PainterState(Painter painter)
				{
					Debug.Assert(painter != null, "painter != null");
					_painter = painter;
				}
예제 #31
0
파일: Program.cs 프로젝트: yudidi/TestDll
        static void TestDrawPolygon()
        {
            Canvas canvas = new Canvas(showForm1.CreateGraphics());
            Painter painter = new Painter(canvas);

            Pen pen = new Pen(Color.Blue);
            Point[] points = { new Point(10, 10), new Point(100, 100), new Point(10, 200) };
            painter.DrawPolygon(pen, points);

            canvas.g = null;
        }
예제 #32
0
 protected override void OnPaint(PaintEventArgs e)
 {
     var painter = new Painter(this, e.Graphics);
     painter.Paint();
 }
예제 #33
0
 protected virtual void DrawControl(Graphics g, bool hot)
 {
     //----- Draw border around control -------------------------//
     Painter.DrawBorder(g, m_ViewStyle, this.ClientRectangle, hot);
     //-----------------------------------------------------------//
 }
예제 #34
0
        public presenter(IMainWindow View)
        {
            timer = new Timer();
            timer.Tick += Timer_Tick;

            this.View = View;

            BlockSize = Block.BlockSize;
            View.TopScore = (int)Settings.Default["TopScore"];

            Draft = new Bitmap(View.MainBoardWidth, View.MainBoardHeight);//
            DraftForNextBlock = new Bitmap(View.BoardWidth, View.BoardHeight);

            this.Painter =new Painter(Draft,BlockSize);
            PainterForNextBlock = new Painter(DraftForNextBlock, BlockSize);

            board = new Board(4, Draft.Height / BlockSize, Draft.Width / BlockSize);
            BoardForNextBlock = new Board(DraftForNextBlock.Height / BlockSize, DraftForNextBlock.Width / BlockSize);

            StartPoint = new Point(3, 0);
            RandomBlock = rand.Next(0, 7);

            blocks = Enumerable.Range(0, 7).ToArray();
            blocks = Shuffle(blocks);
            IndexOfNextBlock = RandomBlock;

            block = new Block(blocks[RandomBlock], StartPoint, board);
            nextblock = new Block(blocks[IndexOfNextBlock], PositionOfNextBlock, board);

            IndexOfNextBlock++;
            ShowNextBlock();

            View.Level = 1;
            
            View.Score = 0;

            Block.ArrivedAtBottom += Block_ArrivedAtBottom;
            board.FullLine += Board_FullLine;
            View.windowKeyDown += View_windowKeyDown;
            View.windowKeyUp += View_windowKeyUp;
            GameOver += Presenter_GameOver;

            View.FullLinesCounter = 0;

            Speed = defaultSpeed;
        }
예제 #35
0
파일: WSplit.cs 프로젝트: Joshimuz/WSplit
        public WSplit()
        {
            this.InitializeComponent();
            base.Paint += new PaintEventHandler(this.clockPaint);
            base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
            base.ResizeRedraw = true;

            // Eventually, the painter should not be dependant of the WSplit object...
            this.painter = new Painter(this);

            this.dview = new DetailedView(this.split, this);
            this.Initialize();
        }
예제 #36
0
        protected override void OnKeyPress( KeyPressEventArgs e )
        {
            if (e.KeyChar == ('W' & 0x1F) &&
                _person != null &&
                _person.HasPhoto &&
                !_person.AddedByPhotographer &&
                Global.Skola.StudentCardTemplates.Count > _nStudentCardTemplate)
            {
                e.Handled = true;
                if (_person.StudentCardIsPrinted)
                    if (Global.askMsgBox(this, "Är du säker på att du vill skriva ut den här personen en gång till?", true) !=
                        DialogResult.Yes)
                        return;
                var mall = Global.Skola.StudentCardTemplates[_nStudentCardTemplate] as Template;
                try
                {
                    using (var painter = new Painter(300, mall.Page, null))
                    {
                        painter.ClearBackground();
                        using (var bmpPortrait = (Bitmap) Image.FromFile(_person.getViewImageFileName(TypeOfViewImage.BackdroppedHi)))
                            painter.PaintPerson(
                                0, 0, 0,
                                pl => bmpPortrait,
                                null,
                                _person,
                                true);
                        Printer.print(
                            painter.Bitmap,
                            TextConv.ConvertText(mall.Magnet, _person));
                        _person.StudentCardIsPrinted = true;
                    }
                }
                catch (Exception ex)
                {
                    Global.showMsgBox(this, ex.Message);
                }
                return;
            }

            base.OnKeyPress(e);
        }
예제 #37
0
 public abstract void Draw(Painter painter);
				public FreeHandState(Painter painter)
					: base(painter)
				{
				}
예제 #39
0
 public static void FillCircle(this Painter p, double centerX, double centerY, double radius)
 {
     p.FillEllipse(centerX - radius, centerY - radius, radius + radius, radius + radius);
 }
예제 #40
0
        //渲染房间云图  new Vector3(28.2f, 0, 13.8f);
        void DrawPositionHeatmap(Transform floor, List <Position> PositionList)
        {
            GameObject Painter;
            Texture2D  tx;
            Vector3    s = Vector3.Scale(floor.GetComponent <MeshFilter>().mesh.bounds.size, floor.lossyScale);

            INT size = new INT((int)s.x * scale, (int)s.y * scale);//这里尽量把大小变成整数 有利于像素打点

            //如果第一次加载 需要实例化云图 并且设置它的层级关系 以及Transform的信息
            //如果更新 或者重新显示 不需要重新创建贴图 存下来利用就好了
            if (!PainterDics.ContainsKey(floor))
            {
                Painter = GameObject.CreatePrimitive(PrimitiveType.Quad);
                tx      = new Texture2D(size.x, size.y);
                Material m = new Material(Shader.Find("Standard"));
                m.mainTexture = tx;
                Painter.GetComponent <MeshRenderer>().material = m;
                Painter.transform.SetParent(floor);
                Painter.transform.localPosition    = new Vector3(0, 0.05f, 0); //比地面高0.05f
                Painter.transform.localEulerAngles = new Vector3(90, 0, 0);    //此处需要确定 模型是不是向上
                Painter.transform.localScale       = new Vector3(1, 1, 1);
                PainterDics.Add(floor, Painter);
            }
            else
            {
                if (PainterDics[floor] == null)//如果被摧毁  也需要重新创建 并且把物体加入到对应的值中
                {
                    Painter = GameObject.CreatePrimitive(PrimitiveType.Quad);
                    tx      = new Texture2D(size.x, size.y);
                    Material m = new Material(Shader.Find("Standard"));
                    m.mainTexture = tx;
                    Painter.GetComponent <MeshRenderer>().material = m;
                    Painter.transform.SetParent(floor.parent);
                    Painter.transform.localPosition    = floor.transform.localPosition + new Vector3(0, 0.05f, 0); //比地面高0.05f
                    Painter.transform.localEulerAngles = new Vector3(90, 0, 0);                                    //此处需要确定 模型是不是向上
                    Painter.transform.localScale       = new Vector3(s.x, s.z, 1);
                    PainterDics[floor] = Painter;
                }
                else
                {
                    Painter = PainterDics[floor];
                    Painter.SetActive(true);
                    tx = Painter.GetComponent <MeshRenderer>().material.mainTexture as Texture2D;
                }
            }

            //存储每个像素的即有人在此位置的个数
            float[,] posArray = new float[size.x + 1, size.y + 1];
            foreach (var pos in PositionList)
            {
                PosArrayAdd(posArray, pos, size);
            }

            //计算完以后就可以打点了
            for (int i = 0; i < size.x + 1; i++)
            {
                for (int j = 0; j < size.y + 1; j++)
                {
                    tx.SetPixel(i, j, GetColor(posArray[i, j]));
                }
            }
            tx.Apply();
        }
예제 #41
0
        private void ColorizeGraph()
        {
            Painter painter = new Painter(canvas);

            painter.Colorize(drawer.Graph);
        }
예제 #42
0
        void RenderPolygon(Painter p)
        {
            switch (this.PolygonSet)
            {
            case PolygonExampleSet.TwoSimplePaths:
            {
                //------------------------------------
                // Two simple paths
                using (Tools.BorrowVxs(out var v1, out var v2))
                {
                    double x = _x - Width / 2 + 100;
                    double y = _y - Height / 2 + 100;

                    PolygonClippingDemoHelper.WritePath1(v1, x, y);
                    PolygonClippingDemoHelper.WritePath2(v2, x, y);

                    p.Fill(v1, ColorEx.Make(0f, 0f, 0f, 0.1f));
                    p.Fill(v2, ColorEx.Make(0f, 0.6f, 0f, 0.1f));

                    CreateAndRenderCombined(p, v1, v2);
                }
            }
            break;

            case PolygonExampleSet.CloseStroke:
            {
                //------------------------------------
                // Closed stroke
                using (Tools.BorrowVxs(out var v1, out var v2))
                {
                    double x = _x - Width / 2 + 100;
                    double y = _y - Height / 2 + 100;

                    PolygonClippingDemoHelper.WritePath1(v1, x, y);
                    PolygonClippingDemoHelper.WritePath2(v2, x, y);

                    p.FillStroke(v1, 2, ColorEx.Make(0f, 0f, 0f, 0.1f));
                    p.FillStroke(v2, 3, ColorEx.Make(0f, 0.6f, 0f, 0.1f));

                    CreateAndRenderCombined(p, v1, v2);
                }
            }
            break;

            case PolygonExampleSet.GBAndArrow:
            {
                //------------------------------------
                // Great Britain and Arrows
                using (Tools.BorrowVxs(out var v1_gb_poly, out var v2_arrows))
                {
                    AffineMat mat1 = AffineMat.Iden();
                    mat1.Translate(-1150, -1150);
                    mat1.Scale(2);

                    Affine mtx1 = new Affine(mat1);


                    PolygonClippingDemoHelper.WriteGBObject(v1_gb_poly, 0, 0, mtx1);

                    p.Fill(v1_gb_poly, ColorEx.Make(0.5f, 0.5f, 0f, 0.1f));
                    p.FillStroke(v1_gb_poly, 0.1f, ColorEx.Make(0, 0, 0));

                    //
                    Affine mtx2 = mtx1 * Affine.NewTranslation(_x - Width / 2, _y - Height / 2);
                    PolygonClippingDemoHelper.WriteArrow(v2_arrows, 0, 0, mtx2);
                    p.Fill(v2_arrows, ColorEx.Make(0f, 0.5f, 0.5f, 0.1f));

                    CreateAndRenderCombined(p, v1_gb_poly, v2_arrows);
                }
            }
            break;

            case PolygonExampleSet.GBAndSpiral:
            {
                //------------------------------------
                // Great Britain and a Spiral
                //
                using (Tools.BorrowVxs(out var v1_gb_poly))
                    using (Tools.BorrowVxs(out var v2_spiral, out var v2_spiral_outline))
                        using (Tools.BorrowStroke(out var stroke))
                        {
                            AffineMat mat = AffineMat.Iden();
                            mat.Translate(-1150, -1150);
                            mat.Scale(2);

                            Affine mtx = new Affine(mat);

                            PolygonClippingDemoHelper.WriteGBObject(v1_gb_poly, 0, 0, mtx);
                            PolygonClippingDemoHelper.WriteSpiral(v2_spiral, _x, _y);

                            p.Fill(v1_gb_poly, ColorEx.Make(0.5f, 0.5f, 0f, 0.1f));
                            p.FillStroke(v1_gb_poly, 0.1f, Color.Black);

                            stroke.Width = 15;
                            p.Fill(stroke.MakeVxs(v2_spiral, v2_spiral_outline), ColorEx.Make(0.0f, 0.5f, 0.5f, 0.1f));

                            CreateAndRenderCombined(p, v1_gb_poly, v2_spiral_outline);
                        }
            }
            break;

            case PolygonExampleSet.SprialAndGlyph:
            {
                //------------------------------------
                // Spiral and glyph
                using (Tools.BorrowVxs(out var v1_spiral, out var v1_spiralOutline, out var v3))
                    using (Tools.BorrowVxs(out var glyph_vxs))
                        using (Tools.BorrowStroke(out var stroke))
                        {
                            //Affine mtx = Affine.New(
                            //   AffinePlan.Scale(4),
                            //   AffinePlan.Translate(220, 200));
                            AffineMat mat = AffineMat.Iden();
                            mat.Scale(4);
                            mat.Translate(220, 200);

                            PolygonClippingDemoHelper.WriteSpiral(v1_spiral, _x, _y);
                            PolygonClippingDemoHelper.WriteGlyphObj(glyph_vxs, 0, 0, new Affine(mat));

                            //-----------------------------------------
                            stroke.Width = 1;
                            stroke.MakeVxs(v1_spiral, v1_spiralOutline);

                            CreateAndRenderCombined(p, v1_spiralOutline, glyph_vxs);

                            p.Fill(v1_spiralOutline, ColorEx.Make(0f, 0f, 0f, 0.1f));
                            p.Fill(glyph_vxs, ColorEx.Make(0f, 0.6f, 0f, 0.1f));
                        }
            }
            break;
            }
        }
예제 #43
0
 public override void ModifyPainter(Painter painter)
 {
     base.ModifyPainter(painter);
     painter.Grass = 0.4f;
 }
예제 #44
0
 public static void StackClearUserObject(this Painter p)
 {
     p._userObjectStack.Clear();
 }
예제 #45
0
		void PaintExcludingArea (WidgetType widgetType, Rectangle bounds, IDeviceContext dc, Rectangle excludedArea, Painter painter)
		{
			Paint (widgetType, bounds, dc, TransparencyType.Alpha, Color.Black, DeviceContextType.Native, bounds, painter, excludedArea);
		}
예제 #46
0
 public void SetUp()
 {
     _painter = new Painter();
 }
예제 #47
0
		void Paint (GdkDrawablePointer drawable, GdkGCPointer gc, Rectangle rectangle, WidgetType widgetType, out GdkPixbufPointer pixbuf, out IntPtr pixelData, out int rowstride, Rectangle clippingArea, Painter painter, Rectangle excludedArea)
		{
			gdk_draw_rectangle (drawable, gc, true, clippingArea.X, clippingArea.Y, clippingArea.Width, clippingArea.Height);
			painter.Paint (styles [(int)widgetType], drawable, new GdkRectangle(clippingArea), widgets [(int)widgetType], 0, 0, rectangle.Width, rectangle.Height, this);
			if (excludedArea.Width != 0)
				gdk_draw_rectangle (drawable, gc, true, excludedArea.X, excludedArea.Y, excludedArea.Width, excludedArea.Height);
			if (
				(pixbuf = gdk_pixbuf_new (GdkColorspace.GDK_COLORSPACE_RGB, true, 8, clippingArea.Width, clippingArea.Height)) == IntPtr.Zero ||
				gdk_pixbuf_get_from_drawable (pixbuf, drawable, IntPtr.Zero, clippingArea.X, clippingArea.Y, 0, 0, clippingArea.Width, clippingArea.Height) == IntPtr.Zero)
				throw new OutOfMemoryException ();
			pixelData = gdk_pixbuf_get_pixels (pixbuf);
			rowstride = gdk_pixbuf_get_rowstride (pixbuf);
		}
예제 #48
0
        /// <summary>
        /// Zoom in or out by a factor of <paramref name="factor"/>. Try to 
        /// keep the last selected position visible in the same position if
        /// at all position.
        /// </summary>
        /// <param name="factor"></param>
        private void Zoom(float factor)
        {
            if (imageMap == null)
                return;
            var addr = MapClientPositionToAddress(xLastMouseUp);
            var oldGranularity = Granularity;
            var newGranularity = (long)Math.Ceiling(Granularity * factor);
            BoundGranularity(newGranularity);

            // We want addr to appear in the same position as it did last time, if possible.
            this.painter = CalculateLayout();
            var iSeg = painter.GetSegment(addr);
            if (iSeg == null)
                return;

            long cxInsideSeg = (addr - iSeg.Segment.Address) / granularity;
            cxOffset = iSeg.X + cxInsideSeg - (xLastMouseUp - CxScroll);
            BoundOffset(cxOffset);
            Invalidate();
        }
예제 #49
0
    static void Main()
    {
        Painter game = new Painter();

        game.Run();
    }
예제 #50
0
 public virtual void OnMouseUp(Vector2 mousePos, Painter painter)
 {
 }
예제 #51
0
        public void MyTestMethod()
        {
            IPainter painter = new Painter();

            painter.Draw();
        }
예제 #52
0
파일: Program.cs 프로젝트: yudidi/TestDll
        static void TestDrawOnBitmap()
        {
            showForm2 = new Form();
            showForm2.Width = 600;
            showForm2.Height = 600;
            showForm2.Show();

            //draw on bitmap
            Bitmap b = new Bitmap(400, 400);

            Canvas canvas = new Canvas(Graphics.FromImage(b));
            Painter painter = new Painter(canvas);

            //draw a line
            Pen pen = new Pen(Color.Red, 1);
            pen.DashStyle = DashStyle.DashDotDot;
            painter.DrawLine(pen, 5, 5, 100, 100);

            //draw a pie
            LinearGradientBrush mylbrush = new LinearGradientBrush(new Rectangle(20, 80, 250, 100),
                   Color.DarkOrange, Color.Aquamarine,
                   LinearGradientMode.BackwardDiagonal);
            Rectangle fanRect = new Rectangle(100, 100,200, 200);
            painter.FillPie(mylbrush, fanRect, 0, 60);

            //show a bitmap onto pictureBox
            PictureBox pictureBox = new PictureBox();
            pictureBox.Size = new Size(500,500);
            pictureBox.BorderStyle = BorderStyle.FixedSingle;

            showForm2.Controls.Add(pictureBox);
            pictureBox.Image = Image.FromHbitmap(b.GetHbitmap());
            pictureBox.Refresh();

            canvas.g = null;
        }
예제 #53
0
 public WorkShopLakier(Damage type, Worker worker, Painter painter, Point pos) : base(type, worker, painter, pos)
 {
 }
예제 #54
0
파일: Line.cs 프로젝트: Lolik21/DevSoft
 public override void Draw()
 {
     Painter.DrawLine(Pen, x, y);
 }
예제 #55
0
 /// <summary>
 /// Renders the display object with the help of a support object.
 /// </summary>
 public abstract void Render(Painter painter);
예제 #56
0
파일: Line.cs 프로젝트: Lolik21/DevSoft
        public override void DeleteFig()
        {
            Pen tmpPen = new Pen(Color.White, 3);

            Painter.DrawLine(tmpPen, x, y);
        }
예제 #57
0
        public void PaintTunnel(List <Door> Doors, Tile Floor, Rect space = null, bool Bold = false, bool shift = true, bool randomRect = true)
        {
            if (Doors.Count == 0)
            {
                return;
            }

            var Level = Run.Level;
            var C     = space;

            if (C == null)
            {
                var c = new Dot(MapX + MapW / 2, MapY + MapH / 2);
                C = new Rect(c.X, c.Y, c.X, c.Y);
            }

            var minLeft   = C.Left;
            var maxRight  = C.Right;
            var minTop    = C.Top;
            var maxBottom = C.Bottom;
            var Right     = MapX + MapW - 1;
            var Bottom    = MapY + MapH - 1;

            Painter.Clip = new Rect(MapX, MapY, MapX + MapW - 1, MapY + MapH - 1);

            foreach (var Door in Doors)
            {
                var dx    = (int)Math.Floor(Door.CenterX / 16f);
                var dy    = (int)Math.Floor(Door.CenterY / 16f);
                var Start = new Dot(dx, dy);
                Dot Mid;
                Dot End;

                if (shift)
                {
                    if ((int)Start.X == MapX)
                    {
                        Start.X++;
                    }
                    else if ((int)Start.Y == MapY)
                    {
                        Start.Y++;
                    }
                    else if ((int)Start.X == Right)
                    {
                        Start.X--;
                    }
                    else if ((int)Start.Y == Bottom)
                    {
                        Start.Y--;
                    }
                }

                int RightShift;
                int DownShift;

                if (Start.X < C.Left)
                {
                    RightShift = (int)(C.Left - Start.X);
                }
                else if (Start.X > C.Right)
                {
                    RightShift = (int)(C.Right - Start.X);
                }
                else
                {
                    RightShift = 0;
                }

                if (Start.Y < C.Top)
                {
                    DownShift = (int)(C.Top - Start.Y);
                }
                else if (Start.Y > C.Bottom)
                {
                    DownShift = (int)(C.Bottom - Start.Y);
                }
                else
                {
                    DownShift = 0;
                }

                if (dx == MapX || dx == Right)
                {
                    Mid = new Dot(MathUtils.Clamp(MapX + 1, Right - 1, Start.X + RightShift), MathUtils.Clamp(MapY + 1, Bottom - 1, Start.Y));
                    End = new Dot(MathUtils.Clamp(MapX + 1, Right - 1, Mid.X), MathUtils.Clamp(MapY + 1, Bottom - 1, Mid.Y + DownShift));
                }
                else
                {
                    Mid = new Dot(MathUtils.Clamp(MapX + 1, Right - 1, Start.X), MathUtils.Clamp(MapY + 1, Bottom - 1, Start.Y + DownShift));
                    End = new Dot(MathUtils.Clamp(MapX + 1, Right - 1, Mid.X + RightShift), MathUtils.Clamp(MapY + 1, Bottom - 1, Mid.Y));
                }

                Painter.DrawLine(Level, Start, Mid, Floor, Bold);
                Painter.DrawLine(Level, Mid, End, Floor, Bold);

                if (Rnd.Chance(10))
                {
                    Painter.Set(Level, End, Tiles.RandomFloor());
                }

                minLeft   = Math.Min(minLeft, End.X);
                minTop    = Math.Min(minTop, End.Y);
                maxRight  = Math.Max(maxRight, End.X);
                maxBottom = Math.Max(maxBottom, End.Y);
            }

            if (randomRect && Rnd.Chance(20))
            {
                if (Rnd.Chance())
                {
                    minLeft--;
                }

                if (Rnd.Chance())
                {
                    minTop--;
                }

                if (Rnd.Chance())
                {
                    maxRight++;
                }

                if (Rnd.Chance())
                {
                    maxBottom++;
                }
            }

            minLeft   = MathUtils.Clamp(MapX + 1, Right - 1, minLeft);
            minTop    = MathUtils.Clamp(MapY + 1, Bottom - 1, minTop);
            maxRight  = MathUtils.Clamp(MapX + 1, Right - 1, maxRight);
            maxBottom = MathUtils.Clamp(MapY + 1, Bottom - 1, maxBottom);

            if (Rnd.Chance())
            {
                Painter.Fill(Level, minLeft, minTop, maxRight - minLeft + 1, maxBottom - minTop + 1, Rnd.Chance() ? Floor : Tiles.RandomFloor());
            }
            else
            {
                Painter.Rect(Level, minLeft, minTop, maxRight - minLeft + 1, maxBottom - minTop + 1, Rnd.Chance() ? Floor : Tiles.RandomFloor());
            }

            Painter.Clip = null;
        }
예제 #58
0
 // this is called when we want to build the layer panel UI for this layer
 public virtual void InitializeEditorUI(Painter painter, VisualContainer root)
 {
 }
예제 #59
0
 public WorkShopDiagnostyk(Damage type, Worker worker, Painter painter, Point pos) : base(type, worker, painter,
                                                                                          pos)
 {
 }
예제 #60
0
 public virtual void DoClear(Painter painter)
 {
 }