Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Бо( Проблемы с физикой в WPF Добавлено: 27.06.10 17:36  

Автор вопроса:  VβÐUηìt | Web-сайт: смекаешь.рф
Подцепил к WPF-васе небезызвестный движок Farseer. Хороший, годный такой движок. И примеров море. Вот только одно но: для WPF все примеры написаны на XAML, на котором, в общем-то все до неприличия просто:
<Rectangle Fill="#FF9E9E9E" Stroke="Black" RadiusX="17" RadiusY="17" Width="676" Height="106" Canvas.Left="54" Canvas.Top="397">
<i:Interaction.Behaviors>

<pb:PhysicsObjectBehavior IsStatic="True"/>
</i:Interaction.Behaviors>
</Rectangle>

Вот эти три строчки
<i:Interaction.Behaviors>

<pb:PhysicsObjectBehavior IsStatic="True"/>
</i:Interaction.Behaviors>

заставляют подчиняться наш Rectangle физическим законам (сверху еще похожая вася а-ля превращение канваса в физический контроллер - тоже 3 строчки).

В общем, все хорошо. Но! Мне нужно создавать эти физические объекты динамически, а не статически. А код на C# я никак гад не хочет работать :( И C#-примеры с XNA смотрел, и пытался перевести с XAML на C# - не получается. На данный момент код выглядит так:

            PhysicsLayer = new PhysicsController() { AutoAddCanvasObjects = true, MousePickEnabled = true, Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch };

            PhysicsCanvas = new Canvas() { Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, IsHitTestVisible = true };
            PhysicsControllerMain.SetPhysicsController(PhysicsCanvas, o);
            var rec = new Rectangle() { Width = 100, Height = 100, Fill = Brushes.Gold, IsHitTestVisible = true };

            PhysicsCanvas.Children.Add(rec);
            PhysicsLayer.GravityHorizontal = 0;
            PhysicsLayer.GravityVertical = 10;

Чую не хватает о-очень простой банальности/и или надо делать совсем по другому. Но как?

Заранее благодарен

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 27.06.10 18:45
Вопрос закрыт. Раста разобрался, и хорошо перевол XAML в C#. Тем, кто любит простые физические движки:

  1.  
  2.            PhysicsCanvas = new Canvas() { Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, IsHitTestVisible = false };
  3.             var rec = new Rectangle()  { Margin = new Thickness(33, 33, 0, 0), HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Width = 50, Height = 50, Fill = Brushes.Gold, Visibility = Visibility.Visible };
  4.             
  5.             Interaction.GetBehaviors(PhysicsCanvas).Add(new PhysicsControllerBehavior() { MousePickEnabled = true });
  6.             Interaction.GetBehaviors(rec).Add(new PhysicsObjectBehavior() { Mass = 1 });
  7.             Canvas.SetTop(rec, 33);
  8.             Canvas.SetLeft(rec, 33);
  9.             PhysicsCanvas.Children.Add(rec);


Смекнули?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам