private void canvasBmp_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Point curPos = e.GetPosition(imgCab); string selPropName; OnOffGauge g = GetSelectedGauge(out selPropName); if (g != null && Math.Abs(curPos.X - lastDown.X) > MIN_MOUSE_MOVE_DRAG / scale && Math.Abs(curPos.Y - lastDown.Y) > MIN_MOUSE_MOVE_DRAG / scale) { int newX = (int)(Math.Min(curPos.X, lastDown.X)); int newY = (int)(Math.Min(curPos.Y, lastDown.Y)); int newWidth = (int)(Math.Abs(curPos.X - lastDown.X)); int newHeight = (int)(Math.Abs(curPos.Y - lastDown.Y)); if (selPropName == PropertySupport.ExtractPropertyName(() => g.OnPosition)) { g.OnPosition.X = newX; g.OnPosition.Y = newY; } else if (selPropName == PropertySupport.ExtractPropertyName(() => g.OffPosition)) { g.OffPosition.X = newX; g.OffPosition.Y = newY; } else { g.Position.X = newX; g.Position.Y = newY; } g.Dimension.Width = newWidth; g.Dimension.Height = newHeight; RefreshDisplayedRects(); } } }
private void canvasBmp_MouseDown(object sender, MouseButtonEventArgs e) { lastDown = e.GetPosition(imgCab); string selPropName; OnOffGauge g = GetSelectedGauge(out selPropName); if (g != null) { if (selPropName == null || selPropName == PropertySupport.ExtractPropertyName(() => g.Position)) { g.Position.X = (int)(lastDown.X); g.Position.Y = (int)(lastDown.Y); } else if (selPropName == PropertySupport.ExtractPropertyName(() => g.OnPosition)) { g.OnPosition.X = (int)(lastDown.X); g.OnPosition.Y = (int)(lastDown.Y); } else if (selPropName == PropertySupport.ExtractPropertyName(() => g.OffPosition)) { g.OffPosition.X = (int)(lastDown.X); g.OffPosition.Y = (int)(lastDown.Y); } RefreshDisplayedRects(); } }
private void RefreshDisplayedRects() { canvasBmp.Children.RemoveRange(1, canvasBmp.Children.Count - 1); string propName; OnOffGauge g = GetSelectedGauge(out propName); if (g != null) { AddRect(g.Position.X, g.Position.Y, g.Dimension.Width, g.Dimension.Height, Brushes.Gray); if (g.Position.X != g.OffPosition.X || g.Position.Y != g.OffPosition.Y) { AddRect(g.OffPosition.X, g.OffPosition.Y, g.Dimension.Width, g.Dimension.Height, Brushes.Red); } if (g.Position.X != g.OnPosition.X || g.Position.Y != g.OnPosition.Y) { AddRect(g.OnPosition.X, g.OnPosition.Y, g.Dimension.Width, g.Dimension.Height, Brushes.Green); } } }