void DrawSample(Graphics graphics) { using (graphics.Generator.Context) { graphics.FillRectangle(Brushes.Green(), 0, 0, 200, 200); if (UseGraphicsPathClip) { var path = GraphicsPath.GetRoundRect(new RectangleF(10, 10, 180, 180), 20); graphics.SetClip(path); } else { graphics.SetClip(new RectangleF(10, 10, 180, 180)); } if (UseClearColor) { graphics.Clear(new SolidBrush(new Color(Colors.Red, 0.5f))); } else { graphics.Clear(); } graphics.FillEllipse(Brushes.Blue(), 25, 25, 150, 150); } }
Control DrawableControl() { var control = new Drawable { Size = new Size(100, 30), CanFocus = true }; control.Paint += delegate(object sender, PaintEventArgs pe) { pe.Graphics.FillRectangle(Brushes.Blue(), pe.ClipRectangle); }; LogEvents(control); return(control); }
Control PathClip() { var control = new Drawable { Size = new Size(350, 250) }; control.Paint += (sender, e) => { using (Generator.Context) { var path = new GraphicsPath(); path.AddEllipse(25, 25, 50, 50); path.AddRectangle(125, 25, 50, 50); path.AddLines(new PointF(225, 25), new PointF(225, 75), new PointF(275, 50)); path.CloseFigure(); e.Graphics.SetClip(path); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Blue(), path.Bounds); path.Transform(Matrix.FromTranslation(0, 75)); e.Graphics.SetClip(path); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Red(), path.Bounds); path.Transform(Matrix.FromTranslation(0, 75)); e.Graphics.SetClip(path); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Green(), path.Bounds); } }; PropertyChanged += (sender, e) => { if (e.PropertyName == "ResetClip") { control.Invalidate(); } }; return(control); }
Control RectangleClip() { var control = new Drawable { Size = new Size(300, 100) }; control.Paint += (sender, e) => { using (Generator.Context) { e.Graphics.SetClip(new RectangleF(25, 25, 50, 50)); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Blue(), new RectangleF(25, 0, 100, 100)); e.Graphics.SetClip(new RectangleF(125, 25, 50, 50)); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Red(), new RectangleF(125, 0, 100, 100)); e.Graphics.SetClip(new RectangleF(225, 25, 50, 50)); if (ResetClip) { e.Graphics.ResetClip(); } e.Graphics.FillRectangle(Brushes.Green(), new RectangleF(225, 0, 100, 100)); } }; PropertyChanged += (sender, e) => { if (e.PropertyName == "ResetClip") { control.Invalidate(); } }; return(control); }