private void drawGrid_MouseMove(object sender, MouseEventArgs e) { System.Windows.Point currnetPosition = e.GetPosition(this.Im_Image); if (e.MouseDevice.LeftButton == MouseButtonState.Pressed) { isdraw = true; if (currentRect != null) { if (currnetPosition.X > Im_Image.Width || currnetPosition.X < 0) { currnetPosition.X = currnetPosition.X < 0 ? 0 : Im_Image.Width; } if (currnetPosition.Y > Im_Image.Height || currnetPosition.Y < 0) { currnetPosition.Y = currnetPosition.Y < 0 ? 0 : Im_Image.Height; } double left = prePosition.X; double top = prePosition.Y; if (prePosition.X > currnetPosition.X) { left = currnetPosition.X; } if (prePosition.Y > currnetPosition.Y) { top = currnetPosition.Y; } currentRect.Margin = new Thickness(left, top, 0, 0); currentRect.Width = Math.Abs(prePosition.X - currnetPosition.X); currentRect.Height = Math.Abs(prePosition.Y - currnetPosition.Y); } } else { RectListView rl = lv_rectlist.SelectedItem as RectListView; if (rl == null) { return; } if (move || rl.SPosX - rl.W / 2 < e.GetPosition(Im_Image).X&& rl.SPosX + rl.W / 2 > e.GetPosition(Im_Image).X&& rl.SPosY - rl.H / 2 < e.GetPosition(Im_Image).Y&& rl.SPosY + rl.H / 2 > e.GetPosition(Im_Image).Y) { Cursor_Hand(); if (e.MouseDevice.MiddleButton == MouseButtonState.Pressed) { move = true; Rectlist[lv_rectlist.SelectedIndex].Margin = new Thickness(e.GetPosition(Im_Image).X + (rl.SPosX - rl.W / 2) - rl.SPosX, e.GetPosition(Im_Image).Y + (rl.SPosY - rl.H / 2) - rl.SPosY, rl.W, rl.H); } } else { Cursor_Cross(); } } }
private void lv_rectlist_SelectionChanged(object sender, SelectionChangedEventArgs e) { RectListView rl = ((ListView)sender).SelectedItem as RectListView; if (rl == null) { return; } foreach (var rect in Rectlist) { rect.Stroke = new SolidColorBrush(Colors.DarkGreen); } Rectlist[lv_rectlist.SelectedIndex].Stroke = new SolidColorBrush(Colors.Aqua); }