kostenloser Webspace werbefrei: lima-city


C# und Linien (zeichnen, verschieben)

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    computer-freak

    computer-freak hat kostenlosen Webspace.

    Hallo,
    Ich habe software programmiert das mir linien erzeugt und wollte fragen ob es möglich ist im nachhinein die linien mit c# zu verschieben?

    Hallo,
    Wie kann ich es realisieren, wenn ich auf den button drücke das er mir eine linie zeichnet. Normal gibt man ja die ganze Grafikfunktionen ins Panel_paint aber wie mache ich es mit dem button?

    Edit by burgi: zwei Threads zusammengefügt.

    Beitrag zuletzt geändert: 6.11.2011 10:02:13 von burgi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo computer-freak,

    um Linien zu verschieben musst Du Dir Anfangs- und Endpunkt außerhalb der OnPaint-Methode merken. Wenn ein Ereignis auftritt, welches die Position Deiner Linie ändern soll, dann musst Du die Koordinaten entsprechen anpassen und danach Refresh aufrufen.
    Um bei einem OnClick-Ereignis eines Buttons eine Linie zu zeichnen musst Du Dir den Graphics-Context mit Hilfe der CreateGraphics-Methode besorgen. Diesen kannst Du dann zum Zeichnen verwenden. Allerdings verschwindet diese Linie beim nächsten Paint-Event, da sie beim erneuten Zeichnen des Hintergrundes quasi wieder gelöscht wird.
    Hier ist ein kleines Beispiel, mit dem man eine Linie durch Klicks auf Buttons nach oben oder unten verschieben kann. Der Mauszeiger wird von einem Kreis verfolgt und beim Klicken auf eine dritte Schaltfläche wird eine Linie gezeichnet:
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace CSharpTest
    {
        public partial class MainForm : Form
        {   
            int linePosition = 100;
            Point circlePosition = new Point();
            
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                
                Graphics g = e.Graphics;
                
                g.DrawLine(Pens.Blue,100, linePosition, 400, linePosition);
                g.DrawEllipse(Pens.DarkGreen,circlePosition.X-4,circlePosition.Y-4, 9,9);
            }
            
            public MainForm()
            {
                InitializeComponent();
            }
            
            void btnPaint_OnClick(object sender, EventArgs e)
            {
                using(Graphics g = CreateGraphics())
                {
                    g.DrawLine(Pens.Red, 200, 10, 200, 390);
                }
            }
            
            void btnUp_OnClick(object sender, EventArgs e)
            {
                linePosition-=10;
                Refresh();
            }
            
            void btnDown_OnClick(object sender, EventArgs e)
            {
                linePosition+=10;
                Refresh();
            }
            
            void MainForm_OnMouseMove(object sender, MouseEventArgs e)
            {
                circlePosition = e.Location;
                Refresh();
            }
        }
    }
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!