Giúp tôi plz. Tôi cần phải quay vòng động của nút trên trục z mà không sử dụng thư viện bên ngoài, chỉ với mã C# và xaml.Nút xoay WPF
Điều đó có khả thi không? Làm thế nào tôi có thể làm điều đó?
Cảm ơn.
Giúp tôi plz. Tôi cần phải quay vòng động của nút trên trục z mà không sử dụng thư viện bên ngoài, chỉ với mã C# và xaml.Nút xoay WPF
Điều đó có khả thi không? Làm thế nào tôi có thể làm điều đó?
Cảm ơn.
Hãy xem Viewport2DVisual3D
Ví dụ trong liên kết thực hiện chính xác điều đó.
Edit: Dưới đây là ví dụ từ liên kết với một hình ảnh động gia tăng của Z trục
Trông như thế này
<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="0, 0, 4"/>
</Viewport3D.Camera>
<Viewport2DVisual3D x:Name="v2dv3d">
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
</Viewport2DVisual3D.Material>
<Button Content="Hello, 3D">
<Button.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<Rotation3DAnimation Storyboard.TargetName="v2dv3d"
Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(RotateTransform3D.Rotation)"
Duration="0:0:2"
BeginTime="0:0:0">
<Rotation3DAnimation.From>
<AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
</Rotation3DAnimation.From>
<Rotation3DAnimation.To>
<AxisAngleRotation3D Angle="90" Axis="0, 1, 0" />
</Rotation3DAnimation.To>
</Rotation3DAnimation>
<Rotation3DAnimation Storyboard.TargetName="v2dv3d"
Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(RotateTransform3D.Rotation)"
Duration="0:0:2"
BeginTime="0:0:2">
<Rotation3DAnimation.From>
<AxisAngleRotation3D Angle="-90" Axis="0, 1, 0" />
</Rotation3DAnimation.From>
<Rotation3DAnimation.To>
<AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
</Rotation3DAnimation.To>
</Rotation3DAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Viewport2DVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
Transformations có thể giúp bạn trong trường hợp này. Hãy xem here nếu điều đó có ích.
Lớp RotateTransform được sử dụng để xoay đối tượng WPF trên mặt phẳng X-Y . Nó có thể được áp dụng thông qua XAML hoặc trực tiếp thông qua mã bắt buộc.
Nếu bạn chỉ cần xoay nút của bạn về trục Z thì bạn sẽ không cần bất kỳ đồ họa 3D nào. Tất cả các UIElements (chẳng hạn như Buttons) đều có thuộc tính RenderTransform, cho phép chuyển đổi cơ bản về giao diện mặc định của chúng. Bằng phương tiện Storyboards, WPF cho phép bạn animate almost any dependency property. Bạn có thể sử dụng một kịch bản, kích hoạt trên tải, animate tài sản của một RotateTransform Góc áp dụng cho các nút:
<Button Width="100" Height="100" Content="Wheeee!">
<Button.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="ButtonRotation" Storyboard.TargetProperty="Angle">
<DoubleAnimation From="0" To="360" Duration="0:0:3" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
<Button.RenderTransform>
<RotateTransform x:Name="ButtonRotation" CenterX="50" CenterY="50" Angle="45"/>
</Button.RenderTransform>
</Button>
Các Viewport2DVisual3D, theo khuyến cáo của @Meleak, cũng hỗ trợ hình ảnh động, và là thú vị để chơi với nếu bạn có thời gian. Để animate dụ MSDN, bạn cần phải thêm một tên cho nguyên tố AxisAngleRotation3D và chuyển đổi nó để nhắm mục tiêu theo trục Z:
<AxisAngleRotation3D x:Name="RotateAboutZ" Angle="40" Axis="0, 0, 1" />
Sau đó, như trên, kích hoạt một kịch bản để bắt đầu trên các sự kiện Loaded của Viewport3D. Trong cả hai trường hợp, nếu bạn cần kiểm soát nhiều hơn hoạt ảnh, bạn có thể đặt bảng phân cảnh của mình thành tài nguyên được đặt tên để tham chiếu bởi các sự kiện khác hoặc thậm chí là xây dựng và kiểm soát hoàn toàn mã đó.
Cảm ơn bạn đã trả lời của bạn. Tôi không chính xác. Tôi cần tạo hiệu ứng cho quá trình này. – Yevgeniy
@Eugene: Đã cập nhật câu trả lời của tôi bằng hoạt ảnh trục z. Dán nó và thử nó :) –
@ Meleak Đây là vòng quay trục Y. Nếu bạn thay đổi trục thành Z, bạn cũng có thể đơn giản hóa bảng phân cảnh, vì nút sẽ không bao giờ tắt máy ảnh. – Kimberly