|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Никогда с графикой в WPF не работал, поэтому не могу понять, как лучше сделать. В формсах все было просто, создаешь свой контрол, отрисовываешь его и вешаешь события на него. Как это сделано здесь, подскажите плиз. Задача такая: Необходимо нарисовать круг толщиной 50-60 пикселей разделенный на равные отрезки (сектора). И необходимо сделать так, чтобы этот круг можно было перемещать (вращать) относительно центра. В инете почитал, что для рисования круга используют Elipse, а для перемещения классы трансформации. Дело в том, что дальше этот круг будет обрастать дополнительными элементами, поэтому и думается о контроле. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 09:46 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Можете переопределить метод OnRender, хотя, по мне лучше использовать GeometryGroup . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 10:52 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Ilya81, Спасибо! Я нашел пару примеров такого плана: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А как нарисовать вот такое (во вложении файл): ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 11:24 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Если линии значков векторные, то можете через Microsoft Expression Design преобразовать их в XAML. Если растровые, попробуйте использовать ImageBrush для фона. Для тени используйте свойство Effects. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 13:17 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 13:24 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
petalvik, Спасибо огромное, очень помог пример. Только есть один вопрос, никак не могу найти позиционирование контрола. Он всегда в центре. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
В стиле тоже ничего не нашел: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Выставление Canvas.Top="0" Canvas.Left="0" не помогает ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 15:27 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Покуда он в StackPanel, а не в Canvas, свойства для Canvas ничего не дадут. Другой вариант - использовать TranslateTransform после RotateTransform (надеюсь, что о порядке scale - rotation - translation знаете). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 16:30 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Ilya81, лично я бы делал так: создаем контрол и переопределяем в нём Measure и Arrange методы, в Arrage нужно взять 12 точек на окружности, то есть с шагом Pi / 6. Угол поворота контрола будет перпендикуляр вектору с заданными точками, потом всё это сдвигаем с центр. профит. + надо для элементов этого круга из знаков задиака сделать геометрию через Clip, чтоб он был изогнут. но можно просто сделать его прозрачным и с помощью фигуры нарисовать бордюр. Геометрию элементов тоже лучше просто подсчитать ну или железно задать радиус и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 09:38 |
|
Нарисовать круг с возможностью вращения его
|
|||
---|---|---|---|
#18+
Roman Mejtes, ну и про вращение. в контроле надо создать зависимое свойство OffsetAngle которое можно будет анимировать с помощью DoubleControl, в свойстве надо указать параметры FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.AffectsRender и анимировать его как и любое другое свойство, через триггеры или просто в конструкторе его создать. угол смещения сами знаете куда вставить ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 09:41 |
|
|
start [/forum/topic.php?fid=21&fpage=20&tid=1441010]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 180ms |
0 / 0 |