xlShortylx
Cadet 4th Year
- Registriert
- Sep. 2012
- Beiträge
- 103
Hallo,
ich möchte eine Art Slider programmieren (mit einfachsten Mitteln) um eine Gruppe von Controls verschieben zu können (soll in der Art wie ein Swipe auf einem Smartphone sein). Das wollte ich nur kurz anhand eines Rechtecks testen, das ich dann mit der Maus verschieben kann.
Dabei gibt es 2 Probleme:
1. Das Rechteck kann sich nicht so schnell mit der Maus mitbewegen, d.h. ich komme mit der Maus aus dem Rechteck heraus und somit bleibt das Rechteck auf der Stelle liegen.
2. Wenn ich das Rechteck zu weit nach rechts bewege, verkleinert sich das Rechteck immer weiter (siehe Bilder). Irgendwie kann ich nicht nachvollziehen, wieso das geschieht.



Hierzu der Code:
Alles "schön" programmieren werde ich erst wenn das auch funktioniert, also bitte keine Kommentare bezüglich der Rechnungen.
ich möchte eine Art Slider programmieren (mit einfachsten Mitteln) um eine Gruppe von Controls verschieben zu können (soll in der Art wie ein Swipe auf einem Smartphone sein). Das wollte ich nur kurz anhand eines Rechtecks testen, das ich dann mit der Maus verschieben kann.
Dabei gibt es 2 Probleme:
1. Das Rechteck kann sich nicht so schnell mit der Maus mitbewegen, d.h. ich komme mit der Maus aus dem Rechteck heraus und somit bleibt das Rechteck auf der Stelle liegen.
2. Wenn ich das Rechteck zu weit nach rechts bewege, verkleinert sich das Rechteck immer weiter (siehe Bilder). Irgendwie kann ich nicht nachvollziehen, wieso das geschieht.



Hierzu der Code:
Code:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
bool ismousedown = false;
double rec_x = 0;
private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
ismousedown = true;
rec_x = e.GetPosition(rec).X;
}
private void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
ismousedown = false;
}
private void Rectangle_MouseMove(object sender, MouseEventArgs e)
{
if (!ismousedown)
return;
double mousePosition_x = e.GetPosition(rec).X;
double mousePosition_y = e.GetPosition(rec).Y;
rec.Margin = new Thickness(rec.Margin.Left + mousePosition_x - rec_x, rec.Margin.Top,
rec.Margin.Right + mousePosition_x - rec_x, rec.Margin.Bottom);
}
}
Alles "schön" programmieren werde ich erst wenn das auch funktioniert, also bitte keine Kommentare bezüglich der Rechnungen.