diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs
index cac3577..53b40cd 100644
--- a/MainWindow.xaml.cs
+++ b/MainWindow.xaml.cs
@@ -223,36 +223,24 @@ namespace CtrEditor
private void RotateControl(UserControl control, Point currentPosition)
{
- // Calcular el vector desde el centro de rotación hasta el punto de inicio
- double deltaX = _startPointUserControl.X - (Canvas.GetLeft(control) + control.ActualWidth / 2);
- double deltaY = _startPointUserControl.Y - (Canvas.GetTop(control) + control.ActualHeight);
-
- // Calcular el vector desde el centro de rotación hasta la posición actual del ratón
- double deltaXCurrent = currentPosition.X - (Canvas.GetLeft(control) + control.ActualWidth / 2);
- double deltaYCurrent = currentPosition.Y - (Canvas.GetTop(control) + control.ActualHeight);
-
- // Calcular los ángulos
- double initialAngle = Math.Atan2(deltaY, deltaX) * (180 / Math.PI);
- double currentAngle = Math.Atan2(deltaYCurrent, deltaXCurrent) * (180 / Math.PI);
-
- // Calcular la diferencia de ángulo y ajustar
- double angleDelta = currentAngle - initialAngle;
+ double deltaX = currentPosition.X - _startPointUserControl.X;
+ double deltaY = currentPosition.Y - _startPointUserControl.Y;
+ double angle = Math.Atan2(deltaY, deltaX) * (180 / Math.PI);
RotateTransform rotateTransform = control.RenderTransform as RotateTransform;
- rotateTransform.Angle = angleDelta;
- rotateTransform.CenterX = 0;
- rotateTransform.CenterY = 0;
+ rotateTransform.Angle = angle; // - _initialAngleUserControl; // Asegúrate de ajustar esta parte según cómo calcules el ángulo inicial
+
// Actualizar el ángulo mostrado
- _angleDisplayTextBlock.Text = $"Ángulo: {angleDelta:F2}°";
+ _angleDisplayTextBlock.Text = $"Ángulo: {angle:F2}°";
PositionAngleDisplay(control);
}
private void PositionAngleDisplay(UserControl control)
{
// Posicionar el TextBlock sobre el control
- Canvas.SetLeft(_angleDisplayTextBlock, Canvas.GetLeft(control) + control.Width / 2 - _angleDisplayTextBlock.ActualWidth / 2);
- Canvas.SetTop(_angleDisplayTextBlock, Canvas.GetTop(control) - _angleDisplayTextBlock.ActualHeight - 5);
+ Canvas.SetLeft(_angleDisplayTextBlock, Canvas.GetLeft(control));
+ Canvas.SetTop(_angleDisplayTextBlock, Canvas.GetTop(control));
}
private void ResizeControl(UserControl control, Point currentPosition)
@@ -261,13 +249,27 @@ namespace CtrEditor
double widthChange = currentPosition.X - _startPointUserControl.X;
// Actualizar el ancho del control
- control.Width = Math.Max(control.ActualWidth + widthChange, control.MinWidth); // Asegurar que no sea menor que el mínimo
+ double newWidth = Math.Max(control.ActualWidth + widthChange, control.MinWidth);
+ control.Width = newWidth; // Asegurar que no sea menor que el mínimo
+
+ // Actualizar el ancho de los elementos internos
+ if (control.Content is Panel panel)
+ {
+ foreach (var child in panel.Children)
+ {
+ if (child is Rectangle rect)
+ {
+ rect.Width = newWidth; // Establece el nuevo ancho
+ }
+ }
+ }
// Actualizar el punto de inicio para el próximo evento de movimiento
_startPointUserControl = currentPosition;
}
+
private void UserControl_MouseEnter(object sender, MouseEventArgs e)
{
// Lógica a ejecutar cuando el mouse entra en el UserControl
diff --git a/ObjetosSim/ucTransporteTTop.xaml b/ObjetosSim/ucTransporteTTop.xaml
index 97dc6d1..21aaf6e 100644
--- a/ObjetosSim/ucTransporteTTop.xaml
+++ b/ObjetosSim/ucTransporteTTop.xaml
@@ -4,6 +4,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:CtrEditor"
- mc:Ignorable="d" >
-
+ mc:Ignorable="d"
+ DataContext="{Binding RelativeSource={RelativeSource Self}}">
+
+
diff --git a/ObjetosSim/ucTransporteTTop.xaml.cs b/ObjetosSim/ucTransporteTTop.xaml.cs
index d49c658..3161db8 100644
--- a/ObjetosSim/ucTransporteTTop.xaml.cs
+++ b/ObjetosSim/ucTransporteTTop.xaml.cs
@@ -23,6 +23,8 @@ namespace CtrEditor.ObjetosSim
public class osTransporteTTop : osBase
{
public double diametro { get; set; }
+ public double Ancho { get; set; }
+ public double Alto { get; set; }
// Otros datos y métodos relevantes para la simulación
public new string Nombre => "Transporte TTOP";
@@ -38,5 +40,6 @@ namespace CtrEditor.ObjetosSim
{
InitializeComponent();
}
+ public osTransporteTTop Datos { get; set; }
}
}