Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.03.2024
Сообщений: 1
1
Excel

Выявление длины фигуры в px

11.03.2024, 12:47. Показов 523. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

Нужен макрос на выявление длины фигуры в px.

При проигрывании макроса, макрос должен узнать длину выделенной фигуру (Shape, Line - линия), от ее основания до конца, и дает всп. сообщение о том, какая длина у линии в пикселях.
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2024, 12:47
Ответы с готовыми решениями:

Вычисление площади фигуры, и длины ее разреза
написать код программы, вычисляющей длину линии вертикального разреза фигуры y_razrez, значения...

Создание двухмерной фигуры из отрезков определенной длины
Нужно написать программу в matlab, которая будет выдавать результат очень похожий на графику turtle...

Нахождение длины контура заданной геометрической фигуры
Необходима прога которая может определять длину контура заданной геометрической фигуры. При этом...

Известны длины каждой из сторон 12-угольника. Определить периметр этой фигуры
Нужно использовать функцию рандом.В программе необходимо предусмотреть вывод сгенерированных чисел ...

14
Модератор
Эксперт MS Access
11963 / 4831 / 779
Регистрация: 07.08.2010
Сообщений: 14,150
Записей в блоге: 4
11.03.2024, 13:43 2
Цитата Сообщение от Figures Посмотреть сообщение
макрос должен узнать длину выделенной фигуру
обычно требуется, чтобы вы выложили пример файла с несколькими линиями
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 21:53 3
Размеры графических элементов обычно задаются как Ширина х Высота, поэтому чтобы вычислить длину отрезка нужно еще знать угол ее наклона. Ну, это и школьник знает.
С использованием библиотеки GDI+ проблем нет, в VBA не приходилось вычислять
И чего только не приходит на ум пытливым разрабам!

Добавлено через 19 минут
Можно узнать длину отрезка, если вычислять ее с помощью фукции API GetCursorPos(), который возвращает текущую позицию курсора, но для этого нужно щелкнуть курсором в начале и в конце отрезка, а дальше - простая геометрия.
VBA вообще слабо приспособлен для работы с графикой.

Добавлено через 22 минуты
А вообще-то вопрос такой. А чем линия создавалась, или это просто кусок битмапа?
0
ᴁ®
Эксперт MS Access
3650 / 2006 / 427
Регистрация: 13.12.2016
Сообщений: 6,900
Записей в блоге: 5
11.03.2024, 22:07 4
любой отрезок (как показанный) это прямоугольный объект. Его длина это диагональ (формула понятна), а объект имеет размеры. Во что твипы переводить не понятно и не задано. Все.
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:10 5
Цитата Сообщение от АЕ Посмотреть сообщение
Во что твипы переводить не понятно
Он же просит в пикселях.
Ваше решение верно, если отрезок точно вписан в прямоугольник. Тут даже придумывать ничего не надо.
0
1189 / 425 / 87
Регистрация: 29.03.2016
Сообщений: 1,027
11.03.2024, 22:15 6
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub asdas()
    Dim w As Long
    Dim h As Long
    
    With ActiveWindow
        If TypeName(.Selection) = "Line" Then
            h = .PointsToScreenPixelsY(.Selection.Height)
            w = .PointsToScreenPixelsX(.Selection.Width)
            Debug.Print w, h
            MsgBox "Selection is '" & .Selection.Name & "', lenght = " & Sqr(h ^ 2 + w ^ 2) & " px."
        End If
    End With
End Sub
Не?
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:20 7
Jamaica, ну да, элементарная геометрия
Я задавался вопросом, а вдруг линия создавалась программно? Тогда определить координаты таким способом не удастся
0
1189 / 425 / 87
Регистрация: 29.03.2016
Сообщений: 1,027
11.03.2024, 22:22 8
Цитата Сообщение от andris2 Посмотреть сообщение
а вдруг линия создавалась программно? Тогда определить координаты таким способом не удастся
удастся, ровно так-же.
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:26 9
Цитата Сообщение от Jamaica Посмотреть сообщение
удастся, ровно так-же.
Не соглашусь. Ровно также не получится. Нужно искать координаты начала и конца, кроме случая, если это просто картинка в которую вписан отрезок
0
ᴁ®
Эксперт MS Access
3650 / 2006 / 427
Регистрация: 13.12.2016
Сообщений: 6,900
Записей в блоге: 5
11.03.2024, 22:27 10
Цитата Сообщение от andris2 Посмотреть сообщение
Ваше решение верно, если отрезок точно вписан в прямоугольник. Тут даже придумывать ничего не надо.
Нарисуйте в экселе отрезок не точно вписанный в прямоугольник и я вам буду рукоплескать. Отрезок есть прямоугольный объект, имеющий длину и высоту. Сделайте не точно нечто вписанное и поржем вместе.

Добавлено через 1 минуту
andris2,
Цитата Сообщение от Figures Посмотреть сообщение
Shape
и картинка это разные вещи.
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:29 11
Цитата Сообщение от АЕ Посмотреть сообщение
Отрезок есть прямоугольный объект,
Вы говорите о картинке (битмапе), а я толкую совсем о другом. Поэтому задал ТС вопрос, чем линия создавалась.
0
1189 / 425 / 87
Регистрация: 29.03.2016
Сообщений: 1,027
11.03.2024, 22:36 12
Цитата Сообщение от andris2 Посмотреть сообщение
Нужно искать координаты начала и конца,
ТС в вопросе указал
Цитата Сообщение от Figures Посмотреть сообщение
(Shape, Line - линия)
Полагаю, достаточно длины и ширины Shape.
Вопрос-то учебный, на умение пользоваться справкой объектной модели.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub ыфыв()
    Dim w As Long
    Dim h As Long
    
    With Workbooks(1).ActiveSheet.Shapes.AddLine(10, 10, 250, 250).Select
        With ActiveWindow.Selection
            h = ActiveWindow.PointsToScreenPixelsY(.Height)
            w = ActiveWindow.PointsToScreenPixelsX(.Width)
            MsgBox "Selection is '" & .Name & "', lenght = " & Sqr(h ^ 2 + w ^ 2) & " px."
        End With
    End With
End Sub
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:41 13
Вот пример, где все создается программно здесь

Добавлено через 4 минуты
Jamaica, главное, чтобы удовлетворило ТС
Я слишком углУбил вопрос
0
1189 / 425 / 87
Регистрация: 29.03.2016
Сообщений: 1,027
11.03.2024, 22:51 14
Цитата Сообщение от andris2 Посмотреть сообщение
где все создается программно
Я уже стар, и ленив.
Пользую Grafana для визуализаций,
там мышкой натыкать можно.
0
569 / 119 / 16
Регистрация: 04.10.2015
Сообщений: 451
11.03.2024, 22:53 15
Цитата Сообщение от Jamaica Посмотреть сообщение
Я уже стар, и ленив
Я тоже по этому пути активно продвигаюсь
0
11.03.2024, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2024, 22:53
Помогаю со студенческими работами здесь

Вычисление длины окружности, площади круга, а также изменение размера фигуры
1. Разработайте приложение, которое для введенного значения радиуса окружности вычисляет длину...

Написать 3 функции - смещения фигуры на указанный вектор, удвоения размера фигуры, перекрашивания фигуры
Написать 3 функции - смещения фигуры на указанный вектор, удвоения размера фигуры, перекрашивания...

Используя различные фигуры (точка, линия, эллипс, круг, прямоугольник и др.) вывести в окне фигуры: домик, человечек, солнце. Фигуры должны быть запол
Используя различные фигуры (точка, линия, эллипс, круг, прямоугольник и др.) вывести в окне фигуры:...

Фигура Управляющий размер, после ввода значений Длины, размер фигуры не изменяется и остаётся прежним
Здравствуйте, буду рад за помощь. Есть фигура Управляющий размер. Не пойму что сделал, теперь...

Найти в векторе количество строк длины 1, длины 2,..., длины n и сформировать по найденным количествам новый вектор
Задать вектор, состоящий из строк. Пройдя в цикле по элментам вектора, найти количество строк длины...

От верёвки длины l отрезали 3/4 её длины. Какой длины стала верёвка?
Условие От верёвки длины l отрезали 34 её длины. Какой длины стала верёвка? Формат входных...

От верёвки длины l отрезали 3/4 её длины. Какой длины стала верёвка? С++
От верёвки длины l отрезали 3/4 её длины. Какой длины стала верёвка? Формат входных данных На...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru