- themirrortruth
- Posts: 8
- Joined:
Manipulation and RenderTransform
Hello.
I'm trying to made an app that use manipulation to change RenderTransform of some objects.
I'm doing it using your tutorial http://www.noesisengine.com/docs/Gui.Co ... orial.html but it's not working. When i'm starting manipulation the object does not react. Also I looked this topic viewtopic.php?f=3&t=751 and I tried to make do like it says but again it not work. I do not understand what the problem is. Can you help with this please. The project is spread here.
https://www.dropbox.com/s/3a6l5ggzjpoio ... n1.7z?dl=0
I'm trying to made an app that use manipulation to change RenderTransform of some objects.
I'm doing it using your tutorial http://www.noesisengine.com/docs/Gui.Co ... orial.html but it's not working. When i'm starting manipulation the object does not react. Also I looked this topic viewtopic.php?f=3&t=751 and I tried to make do like it says but again it not work. I do not understand what the problem is. Can you help with this please. The project is spread here.
https://www.dropbox.com/s/3a6l5ggzjpoio ... n1.7z?dl=0
Re: Manipulation and RenderTransform
What platform are you testing? Manipulation is based in touch events, and Unity only generates touch events in Android, iOS and Windows Mobile.
- themirrortruth
- Posts: 8
- Joined:
Re: Manipulation and RenderTransform
Yes, of course I know that. I'm running it on android.
Re: Manipulation and RenderTransform
Does the tutorial sample work for you? What version of NoesisGUI are you using?
- themirrortruth
- Posts: 8
- Joined:
Re: Manipulation and RenderTransform
Noesis 1.2.3, Unity 5.0.1f1 (64-bit). It feels like I'm doing something wrong. Because if i execute this code, the values of the rotation, scale and translation for some reason very little, as if they are always somewhere to zero.
Code: Select all
private Rectangle rectangle;
private Rectangle manipulationRectangle;
private TextBlock rotate;
private TextBlock scale;
private TextBlock translate;
public void OnPostInit()
{
rectangle = FindName("rectangle") as Rectangle;
manipulationRectangle = FindName("manipulationRectangle") as Rectangle;
rotate = FindName("rotate") as TextBlock;
scale = FindName("scale") as TextBlock;
translate = FindName("translate") as TextBlock;
manipulationRectangle.ManipulationStarting += delegate(object sender, ManipulationStartingEventArgs e)
{
e.Mode = ManipulationModes.All;
e.Handled = true;
};
manipulationRectangle.ManipulationDelta += delegate(object sender, ManipulationDeltaEventArgs e)
{
rotate.Text = "Rotate: " + e.DeltaManipulation.rotation.ToString();
scale.Text = "Scale: " + e.DeltaManipulation.scale.ToString();
translate.Text = "X: " + e.DeltaManipulation.translation.X.ToString() + " Y: " + e.DeltaManipulation.translation.Y.ToString();
e.Handled = true;
};
}
Code: Select all
<Grid x:Name="LayoutRoot"><Rectangle x:Name="rectangle" Fill="Red" IsManipulationEnabled="True" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" Height="300"/>
<TextBlock x:Name="rotate" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="26.667"><Run Text="Rotate:"/><LineBreak/><Run/></TextBlock>
<TextBlock x:Name="translate" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="26.667" Text="X: Y:" Margin="0,48,0,0"/>
<TextBlock x:Name="scale" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="26.667" Margin="0,102,0,0"><Run Text="Scale:"/><LineBreak/><Run/></TextBlock>
<Rectangle x:Name="manipulationRectangle" Fill="#FF1919E0" Opacity="0" IsManipulationEnabled="True" Width="640" Height="480" HorizontalAlignment="Center" VerticalAlignment="Center"/>
Last edited by themirrortruth on 21 Jul 2015, 04:42, edited 1 time in total.
- themirrortruth
- Posts: 8
- Joined:
- themirrortruth
- Posts: 8
- Joined:
Re: Manipulation and RenderTransform
I solved the problem. Code
Code: Select all
public class ViewControl : UserControl
{
private Rectangle rectangle;
private Rectangle manipulationRectangle;
private TextBlock rotate;
private TextBlock scale;
private TextBlock translate;
private TextBlock source;
private TextBlock container;
private float translateX = 0f;
private float translateY = 0f;
private float angle = 0f;
private float zoom = 1f;
public void OnPostInit()
{
rectangle = FindName("rectangle") as Rectangle;
manipulationRectangle = FindName("manipulationRectangle") as Rectangle;
rotate = FindName("rotate") as TextBlock;
scale = FindName("scale") as TextBlock;
translate = FindName("translate") as TextBlock;
source = FindName("source") as TextBlock;
container = FindName("container") as TextBlock;
manipulationRectangle.ManipulationStarting += delegate(object sender, ManipulationStartingEventArgs e)
{
e.Mode = ManipulationModes.All;
source.Text = "Source: " + ((Rectangle)e.Source).Name;
container.Text = "Container: " + e.ManipulationContainer.GetType().Name;
e.Handled = true;
};
manipulationRectangle.ManipulationCompleted += delegate(object sender, ManipulationCompletedEventArgs e)
{
};
manipulationRectangle.ManipulationDelta += delegate(object sender, ManipulationDeltaEventArgs e)
{
translateX += e.DeltaManipulation.translation.X;
translateY += e.DeltaManipulation.translation.Y;
angle += e.DeltaManipulation.rotation;
zoom *= e.DeltaManipulation.scale;
zoom = Mathf.Clamp(zoom, 1f, 2f);
rotate.Text = "Rotate: " + angle;
scale.Text = "Scale: " + zoom;
translate.Text = "X: " + translateX + " Y: " + translateY;
TransformGroup group = new TransformGroup();
group.Children.Add(new RotateTransform { CenterX = rectangle.Width / 2f, CenterY = rectangle.Height / 2f, Angle = angle});
group.Children.Add(new ScaleTransform { CenterX = rectangle.Width / 2f, CenterY = rectangle.Height / 2f, ScaleX = zoom, ScaleY = zoom });
group.Children.Add(new TranslateTransform { X = translateX, Y = translateY});
rectangle.RenderTransform = group;
e.Handled = true;
};
}
Re: Manipulation and RenderTransform
As you discovered, DeltaManipulation provides changes since the last frame. If you want the cumulative changes since the manipulation started you can use the property CumulativeManipulation.
Who is online
Users browsing this forum: Ahrefs [Bot], Google [Bot] and 95 guests