public override bool dragging(PointF p) { double len = getLength(prevPoint, p); int n = (int)(len / PonyThickness); if (n > 0) { double arc = getArc(prevPoint, p); PointF lastPoint = prevPoint; Bitmap bitmap = getBitmap(); for (int i = 1; i <= n; ++i) { PointF pt = new PointF(prevPoint.X + (float)Math.Cos(arc) * (PonyThickness * i + random.Next(-8, 8)), prevPoint.Y + (float)Math.Sin(arc) * (PonyThickness * i + random.Next(-8, 8))); RectangleF rect = new RectangleF(pt, RandomSize); Element e = new Element(rect, PonyVilleView.generateElementBitmap(this, rect.Size, editor.CurrentViewParameters)); elements.Add(e); PonyVilleView.drawElement(editor.CanvasGraphics, e, editor.CurrentViewParameters); lastPoint = pt; } bitmap.Dispose(); prevPoint = lastPoint; } return(true); }
private void regenerateBitmaps() { foreach (Element e in elements) { RectangleF r = e.r; r.Width = e.r.Width * Thickness / prevThickness; r.Height = e.r.Height * Thickness / prevThickness; e.r = r; e.b = PonyVilleView.generateElementBitmap(this, r.Size, editor.CurrentViewParameters); } }
public PonyVille(ScreenshotEditor editor, Color color, int thickness, PointF p, ShapeSettingsPanel panel) : base(editor, color, thickness, panel) { psp = (PonySettingsPanel)panel; psp.SettingsChanged += settingsChanged; RectangleF rect = new RectangleF(p, RandomSize); prevPoint = p; prevThickness = thickness; Element e = new Element(rect, PonyVilleView.generateElementBitmap(this, rect.Size, editor.CurrentViewParameters)); elements.Add(e); PonyVilleView.drawElement(editor.CanvasGraphics, e, editor.CurrentViewParameters); }
public PonyVille(ScreenshotEditor editor, XPathNavigator element) : base(editor, element, createSettingsPanel()) { psp = (PonySettingsPanel)settingsPanel; psp.SettingsChanged += settingsChanged; bool heart = element.GetAttribute("ponytype", "").Equals("heart"); psp.radioHeart.Checked = heart; psp.radioStar.Checked = !heart; prevThickness = Thickness; XPathNodeIterator it = element.Clone().Select("ponies/pony"); while (it.MoveNext()) { float x = float.Parse(it.Current.GetAttribute("x", "")); float y = float.Parse(it.Current.GetAttribute("y", "")); int w = int.Parse(it.Current.GetAttribute("w", "")); int h = int.Parse(it.Current.GetAttribute("h", "")); RectangleF rect = new RectangleF(x, y, w, h); elements.Add(new Element(rect, PonyVilleView.generateElementBitmap(this, rect.Size, editor.CurrentViewParameters))); } }