|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Размещаю набор элементов (прямоугольники, окружности) на канвасе, потом канвас масштабируется через ScaleTransform (по вращению колеса мыши). Имеет ли значение смасштабирую я элементы до размещения на канвасе, чтобы размер канваса был меньше (допустим 600х800) или размещу элементы в тех единицах которые удобны мне (допустим прямоугольник 3000х6000мм), получу канвас 4000х7000 и потом уже смаштабирую канвас? Если я правильно понимаю - и канвас и прямоугольники-окружности в WPF векторные, от их размера и масштаба ни занимаемая память, ни скорость работы не зависят и можно работать в тех единицах, что мне удобны? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 08:25 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 10:55 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Roman Mejtes, Да, я знаю этот компонент. Он хорошо подходит для статического вписывания, но не для масштабирования колесом мыши. Но вопрос даже не в этом - пусть будет ViewBox. Имеет ли значение, помещу я в него Canvas 600х800 или 6000х8000 если на данном канвасе только один прямоугольник с размером 500х700 и 5000х7000 соответственно? Имеет ли смысл масштабировать сначала "руками" прямоугольник до подходящего размера канваса, а потом уже масштабировать канвас? Или если канвас масштабируется, то неважен его первоначальный размер? Будут ли одинаково обрабатываться: 1. Канвас 600х800 scale=1. 2. Канвас 6000х8000 scale=0.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 11:17 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург, вам нужно исходить от единой точки отсчета есть некая система координат, путь это будет канвас у неё есть размер и все объекты в ней должны быть в рамках этой системы. то есть вы добавляете в нее shape'ы такого размера и в таком положении, какой является исходная система координат. а матрица трансформации будет воздействовать на все элементы внутри Canvas, зачем вам увеличивать и рассчитывать размеры новых элементов, если матрица трансформации воздействует на всё содержимое? если вы масштабируйте элемент управления, на память это сильно не влияет, но не забывайте, что каждый элемент управления в результате Render'инга имеет BitmapCache. То есть, в памяти хранится битмап результирующая картинка, но думать об этом особо сильно не надо. Hit-тестинг и получение координат надо делать через встроенные инструменты, как и в 3д с помощью матрицы проекции, это делает и в 2д, к координатам клика применяются те же преобразования и т.д. посмотри вот тут: https://social.msdn.microsoft.com/Forums/vstudio/en-US/d7221b3c-8f86-4c50-bff7-61dbdf2611d9/hittesting-after-scaletransform?forum=wpf даже интересно стало, опишите подробнее, что хотите получить, редактор графики или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 13:52 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо. Т.е. получается, что если у меня допустим физически элементы размером 5000мм, то мне лучше завести канвас соответствующего размера - 6000х6000 допустим, разместить элемент в принятых единицах измерения (мм) и далее уже масштабировать канвас. И это не будет являться моветоном в программировании? автордаже интересно стало, опишите подробнее, что хотите получить, редактор графики или что? Типа того - отображение элементов строительных конструкций и напряжений в них ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 14:03 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Сейчас у меня так делается - в метод передаю канвас и определяю масштаб Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 14:08 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург , для вашей задачи, без вариантов - создаёте целиком поле в удобных координатах Canvas со всеми элементами и масштабируйте Canvas целиком. И почему вы не хотите использовать ViewBox? По мне - очень удобно и не знаю, что может препятствовать его применению. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 16:31 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Eld Hasp, Мне нужно увеличивать изображение колесом мыши и скролить его, viewbox это не делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 17:19 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
не уверен, будет ли полезен вам данный пример, но гляньте :) Код: 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.
код формы в код бихайнд файле Код: c# 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
Блокируем обработку колеса в ScrollViewer'е, а то он падла постоянно хочет прокручиваться, может как то можно умнее сделать, но мне было лень разбираться. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2020, 19:07 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо огромное - то что нужно. Хотя я тоже думаю, что должен быть способ со стандартными классами, без наследования ScrollViewer ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 08:48 |
|
Есть ли смысл масштабировать элементы размещаемые на Canvas?
|
|||
---|---|---|---|
#18+
Евгений, Екатеринбург Roman Mejtes, Спасибо огромное - то что нужно. Хотя я тоже думаю, что должен быть способ со стандартными классами, без наследования ScrollViewer Посмотрите несколько примеров моих реализаций https://www.cyberforum.ru/wpf-silverlight/thread2573138.html#post14191974 https://www.cyberforum.ru/wpf-silverlight/thread2465874.html#post13632736 https://www.cyberforum.ru/wpf-silverlight/thread2565250.html#post14148901 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2020, 09:36 |
|
|
start [/forum/topic.php?fid=21&msg=39938134&tid=1440282]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 412ms |
0 / 0 |