Terminator2
Erfahrenes Mitglied
Ich habe einen Typ "Element" erstellt:
Wenn man mit der Maus ein Fenster auf dem Bildschirm aufzieht, wird das Rechteck beim Loslassen der Maus gesichert:
Ich habe absolut keinen Fehler finden können. Die Prozeduren werden außerdem alle vollständig ausgeführt.
Allerdings kann ich die Elemente mit nichts in der Welt wieder weiterverarbeiten...
Hier noch die Deklaration der Liste, die die Elemente enthält:
Bin leider noch ganz neu in C# und komme nicht mehr weiter, ich hoffe Ihr könnt mir helfen.
Danke!
Code:
public class Element
{
//Dezimalzahlen sind 4-stellig gerundet.
//Prozentsatz der X1,Y1 Koordinate
public Decimal Pos1_X;
public Decimal Pos1_Y;
//Prozentsatz der X2,Y2 Koordinate
public Decimal Pos2_X;
public Decimal Pos2_Y;
}
Wenn man mit der Maus ein Fenster auf dem Bildschirm aufzieht, wird das Rechteck beim Loslassen der Maus gesichert:
Code:
private void cameraWindow_MouseDown(object sender, MouseEventArgs e)
{
//Nur durchführen, wenn ein neues Fenster gezeichnet werden soll:
if (DrawingWindow == true)
{
//Nur bei linker Maustaste reagieren & voriger Auswahl des Objekttypes:
if (e.Button == MouseButtons.Left)
{
MausDown = true;
list.Add(new Point(e.X, e.Y));
}
//Bei rechter Maustaste Vorgang abbrechen:
if (e.Button == MouseButtons.Right)
{
DrawingWindow = false;
MausDown = false;
list.Clear();
cameraWindow.Invalidate();
StatusInfo.Text = "";
}
}
}
private void cameraWindow_MouseMove(object sender, MouseEventArgs e)
{
if (MausDown == true)
{
if ((e.X >= 0) & (e.Y >= 0) & (e.X <= cameraWindow.Width) & (e.Y <= cameraWindow.Height))
{
list.Add(new Point(e.X, e.Y));
}
}
}
private void cameraWindow_MouseUp(object sender, MouseEventArgs e)
{
if ((MausDown == true) & (DrawingWindow == true)) //Wenn Maustaste gedrückt war und ein Fenster gezeichnet werden soll
{
SaveElement(); //Objekt in Bibliothek übernehmen
list.Clear(); //Liste mit Koordinaten leeren
if (e.Button == MouseButtons.Left) MausDown = false; //Maustaste losgelassen
DrawingWindow = false; //Fenster gezeichnet -> fertig
StatusInfo.Text = "";
}
}
private void SaveElement()
{
Element Form = new Element(); //Ein neues Objekt wird in die Bibliothek eingefügt
decimal POS;
//X-WERTE: Koordinaten nach Größe ordnen und auf 4-stelligen %-Wert runden
if (list[0].X < list[list.Count - 1].X)
{
POS = list[0].X * 100 / cameraWindow.Width;
Form.Pos1_X = Math.Round(POS, 4);
POS = list[list.Count - 1].X * 100 / cameraWindow.Width;
Form.Pos2_X = Math.Round(POS, 4);
}
else
{
POS = list[0].X * 100 / cameraWindow.Width;
Form.Pos2_X = Math.Round(POS, 4);
POS = list[list.Count - 1].X * 100 / cameraWindow.Width;
Form.Pos1_X = Math.Round(POS, 4);
}
//Y-WERTE: Koordinaten nach Größe ordnen und auf 4-stelligen %-Wert runden
if (list[0].Y < list[list.Count - 1].Y)
{
POS = list[0].Y * 100 / cameraWindow.Height;
Form.Pos1_Y = Math.Round(POS, 4);
POS = list[list.Count - 1].Y * 100 / cameraWindow.Height;
Form.Pos2_Y = Math.Round(POS, 4);
}
else
{
POS = list[0].Y * 100 / cameraWindow.Height;
Form.Pos2_Y = Math.Round(POS, 4);
POS = list[list.Count - 1].Y * 100 / cameraWindow.Height;
Form.Pos1_Y = Math.Round(POS, 4);
}
AlarmWindow.Add(Form); //Element hinzufügen zur Liste mit allen Alarm-Fenstern
}
Ich habe absolut keinen Fehler finden können. Die Prozeduren werden außerdem alle vollständig ausgeführt.
Allerdings kann ich die Elemente mit nichts in der Welt wieder weiterverarbeiten...
Hier noch die Deklaration der Liste, die die Elemente enthält:
Code:
public class MainForm : System.Windows.Forms.Form
{
public static MainForm Instance = new MainForm();
//Variablen
private Boolean MausDown;
private Boolean DrawingWindow;
private readonly List<Point> list;
public List<Element> AlarmWindow;
Bin leider noch ganz neu in C# und komme nicht mehr weiter, ich hoffe Ihr könnt mir helfen.
Danke!