Как мне расположить эллипс на сетке Silverlight? -- c# поле с участием .net-3.5 поле с участием silverlight-2.0 пол Связанный проблема

How do I position an ellipse on a Silverlight Grid?


3
vote

проблема

русский

Я создаю приложение Silverlight, которое позволит вам нажать в два места на экране и нарисовать эллипс, основной ось которого начинается и заканчивается в местах клики. Область кликабельной кнопки - это управление сеткой Silverlight. В настоящее время:

Когда вы сначала нажмите, я:

  1. бросает маркер на клик точка.
  2. Создание эллипса и воспитания его к сетке.
  3. Создание и установка Angletransform на эллипсе.

Когда вы перемещаете мышь, я:

  1. вычисление расстояния до первый щелчок.
  2. Установка ширины эллипса к Эта длина.
  3. вычисление угла линии к точка щелчка и сетка Ось x.
  4. Установка ангилрансформатора эллипса на этот угол к этому углу.

До сих пор, так хорошо. Эллипс отображается, и его длина и угол вращения следуют мышью, как она движется.

Однако основная ось эллипса смещена из точки щелчков. Как установить ELLIPSE, чтобы его основную ось начинается в точке щелчка и заканчивается на текущем положении мыши?

Английский оригинал

I am creating a silverlight application which will allow you to click at two places on the screen and will draw an ellipse whose major axis starts and ends at the click locations. The clickable area is a Silverlight Grid control. Currently:

When you first click, I am:

  1. Dropping a marker at the click point.
  2. Creating an ellipse and parenting it to the Grid.
  3. Creating and setting an AngleTransform on the ellipse.

As you move the mouse, I am:

  1. Calculating the distance to the first click point.
  2. Setting the Width of the ellipse to this length.
  3. Calculating the angle of a line to the click point and the Grid's X-Axis.
  4. Setting the Ellipse's AngleTransform Angle to this angle.

So far, so good. The ellipse is displayed, and its length and angle of rotation follow the mouse as it moves.

However, the major axis of the ellipse is offset from the click point. How do I position the Ellipse so its major axis starts at the click point and ends at the current mouse position?

</div
        

Список ответов

2
 
vote

Ответ оказался:

    .
  • Не используйте <код> System.Windows.Shapes.Ellipse . Вместо этого используйте <код> System.Windows.Shapes.Path и встроить <код> EllipseGeometry в нем.

  • также установите <код> Path.RenderTransform на <код> RotateTransform .

  • Не устанавливайте <код> Width или <код> Height или <код> Stretch на <код> Path . Вместо этого установите <код> System.Windows.Shapes.Ellipse0 , <код> System.Windows.Shapes.Ellipse1 , а <код> System.Windows.Shapes.Ellipse2 <код> System.Windows.Shapes.Ellipse3 .

  • Наконец, установите <код> System.Windows.Shapes.Ellipse4 на угол пересечения <код> System.Windows.Shapes.Ellipse5 основной осью и ось x (<код> System.Windows.Shapes.Ellipse6 Наклона основных осей). Также установите <код> System.Windows.Shapes.Ellipse7 и <код> System.Windows.Shapes.Ellipse8 на <код> System.Windows.Shapes.Ellipse9 <код> System.Windows.Shapes.Path0

  • .
 

The answer turned out to be:

  • Don't use System.Windows.Shapes.Ellipse. Instead use System.Windows.Shapes.Path and embed an EllipseGeometry in it.

  • Also set the Path.RenderTransform to a RotateTransform.

  • Don't set Width or Height or Stretch on the Path. Instead set the Center, RadiusX, and RadiusY of the EllipseGeometry.

  • Finally, set the RotateTransform.Angle to the angle of intersection of the Ellipse major-axis and the X-axis (the ArcTan of the major-axis slope). Also set RotateTransform.CenterX and CenterY to the EllipseGeometry Center.

</div
 
 
0
 
vote

Если бы мне пришлось угадать (код поможет), я бы подумал, что вы могли бы добавить прокладки из разности начала, нажмите кнопку «Отменить на левую сторону сетки», которая должна помочь переместить его на смещение.

.
 

If I had to guess (code would help), I would think that you could add padding from the difference of the beginning click point to the left side of the grid, which should help move it over by the offset.

</div
 
 
0
 
vote

Может быть, это хорошая идея, чтобы использовать Canvas вместо сетки для вашего приложения, чем вы сможете настроить координаты формы напрямую.

 

May be it's a good idea to use Canvas instead of grid for your application, than you will be able to set up shapes coordianates directly.

</div
 
 

Связанный проблема

2  SMTPClient отправляет RAW HTML  ( Smtpclient sending raw html ) 
Может ли кто-нибудь сказать мне, почему следующий код отправляет электронные письма в Raw HTML? Как в, электронная почта выглядит когда вы просматриваете исто...

1  Служба окна в C # (ServiceProcessInsaller) - Ошибка 5: Доступ запрещен  ( Window service in c sharp serviceprocessinsaller error 5 access is denied ) 
Я использую Visual Studio 2008 и .NETFramework 3.5. Я разработал одно приложение Windows Service в C # с помощью файловой системы. Основная цель этого проекта...

2  Обращайтесь с событиями для динамического (время выполнения) - vb.net  ( Handle events for dynamic run time controls vb net ) 
У меня есть элемент управления WebBrowser, который создается и добавляется в форму во время выполнения. Как подключить этот элемент управления подпрограммой...

5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды ()  ( Can we use response flush instead of response end ) 
<Код> Response.End() генерирует <код> ThreadAbortException . Использование <код> HttpContext.Current.ApplicationInstance.CompleteRequest вместо этого не р...

1  ASP.NET Печать PDF непосредственно к принтеру с настройками  ( Asp net print pdf directly to printer with preferences ) 
Я работаю над проектом, который требует от нас отправлять PDFS на печатную прессу. Ранее мы сделали это с помощью настольного приложения и Acrobat, но я хотел...

1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса»  ( Xero c sharp the current tokenrepository doesnt have a current request token ) 
удалось подключиться к Xero API и получить токен запроса. Однако после перезапуска проекта (для отладки) он в основном дает следующую ошибку при проложении то...

0  Linq 2 SQL Использование содержит [дубликат]  ( Linq 2 sql using contains ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

-4  Будет вернуться внутрь памяти утечки для петли?  ( Will a return inside of a for loop leak memory ) 
в основном все, что мне нужно знать, является ли возвращение внутри цикла для цикла в C #. <код> for (int i = 0; i <= 20; i++ ) { if(i == 10) re...

8  Требуется 407 аутентификация - не отправлено проблем  ( 407 authentication required no challenge sent ) 
<Сильное> Обновление: Если вы только что прибыли на этот вопрос, генеральный сигнал заключается в том, что я пытаюсь сделать httpwebrequest через прокси, и ...

4  Как написать на пользовательский журнал событий?  ( How to write to a custom event log ) 
Я пытаюсь получить мою службу .NET Windows вправо на пользовательский журнал событий. Я использую <код> EventLogInstaller , чтобы создать журнал событий и ист...

1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper?  ( Wix toolset build fails after upgrading from net 4 0 to 4 6 1 cannot load msbu ) 
Так после обновления всего проекта до 4.6.1 Я получаю эту ошибку, выброшенную нагревом, когда я его создаю: <код> Failed to load MSBuild wrapper object: Cou...

12  Сырые запросы SQL и основной базы  ( Raw sql queries and entity framework core ) 
Я переносим свое приложение в Core Ass.net MVC Core и Framework Framework, и я нашел проблему. У меня есть RAW SQL-запрос к сущности, как это <код> var rawS...

0  Streaminsight и долгосрочные запросы  ( Streaminsight and long running queries ) 
У меня есть приложение, построенное на вершине Streaminsight 1.2, который имеет несколько постоянных запросов, выполняющих некоторые расчеты в операторах опре...

0  Должен ли я использовать ExecuteNonQuery для этой команды резервного копирования БД  ( Should i use executenonquery for this db backup command ) 
<Р> У меня есть метод, который позволяет мне пнуть резервную копию базы данных. То, что я интересно, если я должен использовать ExecuteNonQuery () в этом конте...

0  C # сделать в то время как Unassigned локальной проблемы переменной  ( C sharp do while unassigned local variable problem ) 
<Р> Я после C # курса и пытаюсь обновить мой метод ввода пользователя, чтобы проверить, если введенная входную консоль целое. Я написал сам в то время как сдел...

Связанный проблема

2  SMTPClient отправляет RAW HTML 
1  Служба окна в C # (ServiceProcessInsaller) - Ошибка 5: Доступ запрещен 
2  Обращайтесь с событиями для динамического (время выполнения) - vb.net 
5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды () 
1  ASP.NET Печать PDF непосредственно к принтеру с настройками 
1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса» 
0  Linq 2 SQL Использование содержит [дубликат] 
-4  Будет вернуться внутрь памяти утечки для петли? 
8  Требуется 407 аутентификация - не отправлено проблем 
4  Как написать на пользовательский журнал событий? 
1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper? 
12  Сырые запросы SQL и основной базы 
0  Streaminsight и долгосрочные запросы 
0  Должен ли я использовать ExecuteNonQuery для этой команды резервного копирования БД 
0  C # сделать в то время как Unassigned локальной проблемы переменной