|
|
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Застопорился на таком вопросе, небольшая программа рисования, хочу реализовать "концепцию" когда на экране отображается как бы документ. Т.е некоторый белый прямоугольник с тенью, как например в офисных пакетах(помните раньше в программах некоторых было, или скажем когда режим предпросмотра печати включаешь). Я себе представляю это как, "белый прямоугольник" это у нас JPanel, от неё можно унаследовать свой класс, залить её белым цветом и рисовать на ней(отслеживать координаты мыши и т.д) а как сделать например тень под ней, или серую область вокруг? Далее, если мы делаем зум, то надо оставить некоторый зазор между краем белой области и краем экрана, и скролы включать только если границы окна "наезжают" на белую область, как этого добиться? Может есть примеры? Поделитесь пожалуйста :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:12 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Почему бы не взять JavaFX где уже куча свистелок в виде CSS имеется? http://docs.oracle.com/javafx/2/get_started/css.htm I dont knowЯ себе представляю это как, "белый прямоугольник" это у нас JPanel JPanel это контейнер для других контролов. С тем же успехом можно взять JComponent, например. I dont know, от неё можно унаследовать свой класс, залить её белым цветом и рисовать на ней(отслеживать координаты мыши и т.д) а как сделать например тень под ней, или серую область вокруг? Border с кастомной отрисовкой. https://docs.oracle.com/javase/tutorial/uiswing/components/border.html#custom I dont knowДалее, если мы делаем зум, то надо оставить некоторый зазор между краем белой области и краем экрана, и скролы включать только если границы окна "наезжают" на белую область, как этого добиться? Может есть примеры? Поделитесь пожалуйста :) http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html I dont knowМожет есть примеры? Поделитесь пожалуйста :) Java SE Development Kit 8u111 Demos and Samples Downloads ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:21 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо, а есть разница в скорости отрисовки графики, если использовать JPanel или JComponent? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:30 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
P.S. C JavaFX дел никогда не имел, думается мне, что там это сделать сложнее будет + много сначала нужно изучить, прежде чем на ней кодить. Swing проще, имхо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:32 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowP.S. C JavaFX дел никогда не имел, думается мне, что там это сделать сложнее будет + много сначала нужно изучить, прежде чем на ней кодить. Swing проще, имхо ) ошибаетесь. Потом пожалеете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:38 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowСпасибо, а есть разница в скорости отрисовки графики, если использовать JPanel или JComponent? Нет. Если хотите с какой-то непонятной целью освоить Swing, то очень рекомендую научиться смотреть в исходники. Там много такого что из документации выудить не так просто. В часности можно посмотреть на JPanel и понять что толку от этого класса для вашей задачи нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:44 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Почему? в данном случае же это просто холст. Я тогда возьму вместо него JComponent. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 11:54 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont know, сейчас вы как рисуете? Лупа есть? Если есть, то вам проще всё с нуля. Т.е. считаете что страничка это тоже A4. Сначала заливка серым, потом отрисовка рамки и потом белым+рисунки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 12:09 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont know, если у вас векторные рисунки на основе объектов платформы, тогда и панель-подложка повыше в иерархии классов. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 12:10 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowP.S. C JavaFX дел никогда не имел, думается мне, что там это сделать сложнее будет + много сначала нужно изучить, прежде чем на ней кодить. Swing проще, имхо ) На Swing всё намного сложнее. Любые украшения - рисовать самому в 2D. Анимация - самому. Анонимые классы вместо биндинга - куча синтаксического шума. Ну, и рисовать в 2D, правильно учитывая размеры шрифтов и DPI вы не сможете. В векторе с этим проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 12:14 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Petro123, Сейчас просто панель растягиваю на всё окно и в ней рисую. Колёсиком мыши зуммирую, путём изменения размера панели(размер панели на коэффициент зума). В зуме еще одна загвоздка, например если мы рисуем сетку, то размер её линий не должен зависеть от зума, а в остальном, просто вызываю метод scale у Grapchics2D. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 13:10 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowесли мы рисуем сетку, то размер её линий не должен зависеть от зума рисовать отдельно с шагом по настройкам от юзверя. I dont knowа в остальном, просто вызываю метод scale у Grapchics2D. тогда линии (толщина) становятся масштабируемыми и некрасивыми. Так? Вообще, скриншот бы пригодился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 13:20 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont know...залить её белым цветом и рисовать на ней(отслеживать координаты мыши и т.д)... А, допустим, сохранять данные вы как планируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 13:29 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Petro123, Пока у меня так(скриншот). Код пока прост: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Далее класс самой панели рисования(в дальнейшем унаследую её от JComponent а не от JPanel) Код: java 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. Вот так я меняю scaleFactor и размеры панели Код: java 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 13:43 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Нахлобуч, Сохранить данные можно просто записав нужные значения в файл, в данном случае для примера не принципиально. А так скорее всего xml в который буду писать то что мне нужно. Предполагаю создать класс, скажем Document, у него определить список примитивов(линий, кружков и т.д, всего что нарисовали и натыкали мышкой на экране) и функцию, скажем saveData(fileName) которая будет пробегать по этому списку и записывать его содержимое в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 13:49 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Делал ещё концептуальные изыски, типа абстрактный класс "Документ", который сам знает что рисовать и отрисовывает своё содержимое, достаточно подсунуть его в панель для рисования, в методе paintComponent() которой вызвать метод рисования документа, но получилось какая-то лабуда :( Код: java 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. 80. 81. 82. 83. 84. 85. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 14:00 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowДелал ещё концептуальные изыски, типа абстрактный класс "Документ", который сам знает что рисовать и отрисовывает своё содержимое, достаточно подсунуть его в панель для рисования, в методе paintComponent() которой вызвать метод рисования документа, но получилось какая-то лабуда :( Для подобных изысков, хорошо бы разобраться в истории вопроса: MVC, MVP, MVVM. Тогда, возможно, вместо лабуды получилось бы что-то путное. Можно было бы хотя бы следовать подходу Swing - Model, Component, UI. UI, правда в Swing не шибко предназначен для расширения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 14:07 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowПока у меня так(скриншот). дак у вас ничего нет. Вы же писали что рисунок масштабируете. Где он? Стратап? Только начали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 14:20 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Petro123Стратап? Стартап? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 14:21 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowкоторой вызвать метод рисования документа, для графического редактора делают векторный движок. Для текстового редактра делают текстовый редактор с подсветкой и т.д. А потом уже обрамление в виде документа. IMHO Начните не с рамки документа, а с движка сердцевины-ядра. Если у вас стартап. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 14:29 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowПредполагаю создать класс, скажем Document... Вот это правильное направление. Тут уже упомянули MVC, MVVM и прочее -- послушайте совет, почитайте, что это за звери. И сразу: документ не должен знать, как себя рисовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 15:14 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Petro123, Ну дык в paintComponent() и рисую, то что я в этом методе навставляю вызовов g2d.draw* сути не изменит, потому что не понимаю саму суть, как правильно представить этот вид, как он должен быть устроен, на чём основан, как правильно его смасштабировать. Если я вначале этого метода поставлю например g2d.scale(), все что я нарисовал смасштабируется, но я не знаю, правильно ли это, и как при таком подходе добиться, чтобы масштабировалось только то что мне надо, оставив несмасштабированным например линии сетки. По поводу документа, лабуда получается именно в части отображения, ввиду того что указал выше. Хранение данных сложностей не вызывает, их загрузка/сохранение в принципе тоже. Вот так вот у меня ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 18:01 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowчтобы масштабировалось только то что мне надо, оставив несмасштабированным например линии сетки. чтобы тОлщины линий не масштабировались (нулевая толщина) - рисовать надо уже в масштабе LineTo, LineTo() Т.е. класс Объект Сетка и рисуй на канве. В чём проблема? Проблема в масштабировании остального. Но ты не показал ничего. Покажи хотя бы 1 элемент отрисовки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 18:25 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
I dont knowкак правильно его смасштабировать. у меня в проекте бы объект-класс Координаты. Который преобразовывал глобальные в локальные канвы и отрисовка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 18:26 |
|
||
|
Простенькая программа рисования, как реализовать такую концепцию ?
|
|||
|---|---|---|---|
|
#18+
Petro123чтобы тОлщины линий не масштабировались (нулевая толщина) - рисовать надо уже в масштабе LineTo, LineTo() Т.е. класс Объект Сетка и рисуй на канве. В чём проблема? Тут не понял, можно подробнее или пример? Завтра доберусь до проекта(на работе), попробую нарисовать что-нибудь... линии какие-нибудь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 18:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39371027&tid=2123342]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 356ms |

| 0 / 0 |
