Tôi đang làm một ứng dụng Wpf và tôi tạo một điều khiển với hình dạng của một mắt, tôi đặt một hình elip (mắt) trong Canvas và mục đích của tôi là khi con trỏ chuột nhập trong Canvas Ellipse theo con trỏ chuột. Bạn có đề xuất nào về cách thực hiện tác vụ này không? Cảm ơn bạn rất nhiều vì đã chú ý đến bạn.Đối tượng theo con trỏ chuột
Cheers
EDIT
Tôi có cập nhật mã của tôi trong XAML:
<Window Height="480" Title="Window2" Width="640" x:Class="WpfApplication5.Window2"
x:Name="Window" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<Storyboard x:Key="OnLoaded1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ctrCircle"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="1">
<EasingDoubleKeyFrame.EasingFunction>
<ExponentialEase EasingMode="EaseOut" />
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ctrCircle"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="1">
<EasingDoubleKeyFrame.EasingFunction>
<ExponentialEase EasingMode="EaseOut" />
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Style TargetType="Ellipse">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
</Style>
</Window.Resources>
<Canvas MouseMove="mov" x:Name="LayoutRoot">
<Border ackground="Black" B="" Canvas.Left="178" Canvas.Top="103"
CornerRadius="250" Height="255.5" Width="290" x:Name="border_eye">
<Ellipse Fill="#FFFFC600" Height="12" HorizontalAlignment="Left"
Margin="0" RenderTransformOrigin="0.5,0.5" Stroke="{x:Null}"
VerticalAlignment="Center" Visibility="Visible" Width="12" x:Name="ctrCircle">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
</Border>
</Canvas>
</Window>
và trong các mã sau:
private void mov(object sender, MouseEventArgs e)
{
System.Windows.Point pt = e.GetPosition((Canvas)sender);
Storyboard invokeStoryboard = this.Resources["OnLoaded1"] as Storyboard;
((DoubleAnimationUsingKeyFrames)invokeStoryboard.Children[0]).KeyFrames[0].Value = pt.X;
((DoubleAnimationUsingKeyFrames)invokeStoryboard.Children[1]).KeyFrames[0].Value = pt.Y;
invokeStoryboard.Begin();
}
tại mục đích của tôi là khi tôi di chuyển chuột trong vùng Canvas (LayoutRoot), Ellipse (ctrCircle) chỉ di chuyển bên trong Border (border_eye) và không vượt qua khu vực của "border_eye" hiệu ứng này tương tự như một con mắt.
Bạn có bất kỳ đầu vào nào để thực hiện bước này không?
Cảm ơn rất nhiều
Chúc một ngày tốt đẹp.
Chúc mừng
Cảm ơn Chris tôi quên viết ra một cách chi tiết, mắt nghỉ trong một thành phần i viết xuống mã: ... vì vậy tôi muốn khi chuột nhập vào mainCanvas con mắt di chuyển bên trong canvas_eye mà không đi ra ngoài biên giới canvas_eye. Xin lỗi vì lời giải thích không tốt của tôi trước đây, hy vọng bạn có được điểm của nhiệm vụ của tôi. –
JayJay
Có vẻ như JayJay cũng muốn một sự chậm trễ nới lỏng trong 8 giây, được định nghĩa trong XAML. – bitbonk