Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25

нарисовать многоугольник

18.02.2016, 08:56. Показов 1932. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста новичку! Как нарисовать многоугольник напрямую на canvas? Например 8 вершин: начинаем с точки(вершину) (А), потом ставим точку(В) точки А и В соединяются прямой, и т.д и т.п последняя точка замыкается с точкой А. При нажатии на стороны полученной фигуры вводится размер. Затем рассчитать площадь полученной фигуры зная или углы или диагонали. Может кто то сталкивался!? В каком направлении искать, читать, учить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2016, 08:56
Ответы с готовыми решениями:

Как можно нарисовать многоугольник
Доброе время суток. Как можно нарисовать многоугольник на canvas, если есть размеры сторон углы в градусах и размеры диагоналей. Какие...

Нарисовать многоугольник
Здравствуйте :) Я не халявщик, просто не хватает опыта. У меня задача: нарисовать некий рисунок(в принципе сам рисунок не важен),...

Нарисовать многоугольник
подскажите как нарисовать многоугольник программно. (мне конкретно нужен 6 угольник) представление имею что окружность надо поделить на 6 и...

7
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.02.2016, 10:34
Нарисовать просто
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Находим все точки
PointF pointA = ...
PointF pointB = ...
...
 
Path path = new Path();
path.moveTo(pointA.x, pointA.y);
path.lineTo(pointB.x, pointB.y);
path.lineTo(pointC.x, pointC.y);
....
path.close();//Закрывает фигуру от последней точки к первой.
 
//Создаем Paint
Paint paint = new Paint();
//Настраиваем его по вкусу
 
canvas.drawPath(path, paint);
Все инициализации нужно вынести из onDraw() т.к. на выделение памяти уходит много времени. Т.е. все точки, path, paint должны быть инициализированы уже в onCreate(), а в onDraw() только задавать им параметры.

С нажатием уже сложнее нужно повесить на вьюшку onTouchListener и в нем при нажатии искать какая грань нажата, возможно даже лучше рисовать в таком случае не Path, а линиями, чтобы их было легко подсветить и т.п.
1
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
18.02.2016, 11:45  [ТС]
Можно пожалуйста чуть подробнее. Спасибо
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
18.02.2016, 11:48
serjekat, что именно подробнее?
0
18.02.2016, 11:59

Не по теме:

очевидно ведь
надо полностью готовый код - самодостаточный метод или кастомный класс и подробная инструкция, а он потом вероятно даже не зайдет в тему или на форум чтобы отписаться :D

0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
18.02.2016, 12:10
Цитата Сообщение от serjekat Посмотреть сообщение
Можно пожалуйста чуть подробнее. Спасибо
Использовал ответы отсюда: http://stackoverflow.com/quest... ed-polygon.
А для того чтобы нарисовать на канве, почитайте что-нибудь с нуля, например, http://android-er.blogspot.ru/... as-of.html.
0
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
18.02.2016, 12:30  [ТС]
Готовый код это хорошо, но хочется разобраться во всем этом. Только начал. Смотрю читаю уроки и т.д и т.п.ю Спасибо за ссылки обязательно буду изучать.
0
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 25
21.03.2016, 11:36  [ТС]
Нарисовать многоугольник получилось, а как каждой вершине задать "Имя" ил номер!?
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
@Override
    public boolean onTouchEvent(MotionEvent event) {
 
 
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    if (i == 0) {
                        startX = event.getX();
                        startY = event.getY();
 
                        x[i] = startX;
                        y[k] = startY;
                        path.moveTo(x[i], y[k]);
                        path.addCircle(x[i], y[k], 20, Path.Direction.CCW);
 
                    } else {
                        x[i] = event.getX();
                        y[k] = event.getY();
                        moveY = y[i];
                        moveX = x[k];
 
                        if (startX > moveX - Rad &&
                                startX < moveX + Rad &&
                                startY > moveY - Rad &&
                                startY < moveY + Rad) {
                            path.lineTo(startX, startY);
                            path.close();
                            invalidate();
 
                            return false;
 
                        } else {
                            path.lineTo(x[i], y[k]);
 
                            path.addCircle(x[i], y[k], 15, Path.Direction.CCW);
                        }
                    }
 
                    i++;
                    k++;
            }
 
        }
 
        invalidate();
        return true;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2016, 11:36
Помогаю со студенческими работами здесь

Нарисовать многоугольник
У меня есть массив из n элментов. 3&gt;n&gt;11. Point points. В points хранятся координаты точек. По этим точкам нужно построить...

Нарисовать многоугольник
здравствуйте! Мне надо построить такой многоугольник, а я наугад чертил линии. помогите пожалуйста построить многоугольник. И еще...

Как нарисовать многоугольник?
Хочу нарисовать многоугольник с некоторыми координатами углов. Как?!

Как нарисовать многоугольник
Не могу понять как нарисовать многоугольник. то есть я знаю что надо использовать Graphics я не могу понять как заполнить структуру PointF ?

Нарисовать многоугольник с диагоналями
Помогите, пожалуйста. Есть начало кода - построение многоугольника. Не знаю как добавить диагонали const n=6; Var...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru