Рисование на форме в C#
Формулировка задачи:
Всем привет. Нужно на форме нарисовать фигуру из линий и перестакивать её по форме.
Написал такой код (кое-что из MSDN):
По форме нормально таскать могу, но как только дотаскиваю до начала координат или одной координатной оси линия там и остаётся. Подскажите в чём дело и как это вылечить. Заранее спасибо
private bool mousePressed = true; private void Form1_MouseMove(object sender, MouseEventArgs e) { if(mousePressed) { Graphics g = Graphics.FromHwnd(this.Handle); g.Clear(this.BackColor); Pen redPen = new Pen(Color.Red, 3); Point point1 = new Point(e.X + 50, e.Y + 50); Point point2 = new Point(e.X + 100, e.Y + 25); Point point3 = new Point(e.X + 200, e.Y + 5); Point point4 = new Point(e.X + 250, e.Y + 50); Point point5 = new Point(e.X + 300, e.Y + 100); Point point6 = new Point(e.X + 350, e.Y + 200); Point point7 = new Point(e.X + 250, e.Y + 250); Point[] points = { point1, point2, point3, point4, point5, point6, point7 }; g.DrawLines(redPen, points); } }
Кто-нибудь что-нибудь знает по данному вопросу?
Решение задачи: «Рисование на форме в C#»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; namespace DrawE { public struct POINT { public int X; public int Y; } public partial class mainForm : Form { [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetCursorPos(out POINT lpPoint); public IEnumerable<Control> AllControls(Control control) { foreach (Control _contrl in control.Controls) { yield return _contrl; if (_contrl.Controls.Count > 0) foreach (Control childControl in AllControls(_contrl)) yield return childControl; } } public mainForm() { InitializeComponent(); IEnumerable<Control> allControls = AllControls(this); foreach (Control control in allControls) control.MouseMove += Form1_MouseMove; } private void Form1_MouseMove(object sender, MouseEventArgs e) { POINT point = new POINT(); if (GetCursorPos(out point)) { Graphics g = Graphics.FromHwnd(this.Handle); g.Clear(this.BackColor); Pen redPen = new Pen(Color.Red, 3); Point point1 = new Point(e.X + 0, e.Y + 0); Point point2 = new Point(e.X + 100, e.Y + 25); Point point3 = new Point(e.X + 200, e.Y + 5); Point point4 = new Point(e.X + 250, e.Y + 50); Point point5 = new Point(e.X + 300, e.Y + 100); Point point6 = new Point(e.X + 350, e.Y + 200); Point point7 = new Point(e.X + 250, e.Y + 250); Point[] points = { point1, point2, point3, point4, point5, point6, point7 }; g.DrawLines(redPen, points); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д