Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.01.2009, 18:58   #1
rzrwolf
Пользователь
 
Регистрация: 19.10.2008
Сообщений: 22
По умолчанию Макрос-рисование сетки

Передо мной стоит такая задача: построить сетку карты определенной проекции на листе Excel...

Параметры сетки (координаты линий и их длины, расстояние между линиями) уже рассчитаны аналитически, теперь стоит задача их нарисовать.

Проблема состоит в том, что в зависимости от введенной долготы и широты точек количество параллелей и меридианов(линий сетки) может быть разное и расстояние между ними тоже может отличаться...

Помогите, пожалуйста, с алгоритмом прорисовки линий - пока думаю сделать все через цикл - и в зависимости от кол-ва линий повторять его нужное количество раз...

МОжет есть способ попроще?
rzrwolf вне форума
Старый 03.01.2009, 19:35   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
построить сетку карты определенной проекции
более понятной постановки задачи я ещё не встречал

Цитата:
Помогите, пожалуйста, с алгоритмом прорисовки линий
Нарисовать-то линию не проблема - это делается одной командой.
Для этого нужно знать координаты начальной и конечной точки отрезка линии (4 значения).

А, может, Вы собираетесь рисовать параллели не прямыми линиями, а кривыми (как на карте мира)?

Цитата:
Помогите, пожалуйста, с алгоритмом прорисовки линий
Какой там алгоритм - несколько строк кода...
Например, так:
Код:
Sub Макрос1()
    количество_линий = 8
    расстояние_между_линиями = 33: длинаX = 300: началоX = 150: началоY = 250
    For i = 1 To количество_линий
        координатаY = началоY + (i - 1) * расстояние_между_линиями
        ActiveSheet.Shapes.AddLine началоX, координатаY, началоX + длинаX, координатаY
    Next
End Sub
Проще уже некуда...

Последний раз редактировалось EducatedFool; 03.01.2009 в 19:49.
EducatedFool вне форума
Старый 03.01.2009, 19:50   #3
rzrwolf
Пользователь
 
Регистрация: 19.10.2008
Сообщений: 22
По умолчанию

Проекция Меркатора у меня, потому все линии будут прямые..

Я так и хотел сделать, вы подтвердили мою мысль, спасибо.

А точку с подписью как нибудь можно поставить? Макросы знаю очень плохо - команды похожей на точку не нашел...
rzrwolf вне форума
Старый 03.01.2009, 20:01   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А точку с подписью как нибудь можно поставить?
Например, так:
Код:
Sub Макрос1()
    количество_линий = 8: диаметр_точки = 4
    расстояние_между_линиями = 40: длинаX = 300: началоX = 150: началоY = 250
    For i = 1 To количество_линий
        координатаY = началоY + (i - 1) * расстояние_между_линиями
        ActiveSheet.Shapes.AddLine началоX, координатаY, началоX + длинаX, координатаY
        
        ActiveSheet.Shapes.AddShape(msoShapeOval, началоX + i * длинаX / количество_линий - диаметр_точки / 2, _
                                    координатаY - диаметр_точки / 2, диаметр_точки, диаметр_точки).Fill.ForeColor.SchemeColor = 8

        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, началоX + 5 + i * длинаX / количество_линий, _
                                      координатаY + 5, 100, 12).TextFrame.Characters.Text = "это точка на линии " & i
    Next
End Sub
EducatedFool вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование Granus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 32 30.06.2009 23:23
Создание координатной сетки на компоненте Image Thasraney Общие вопросы Delphi 5 03.06.2008 14:16
Рисование... HunterMan Win Api 10 30.04.2008 23:46
Создание пиксельной сетки в MDI приложении shkiper Общие вопросы Delphi 5 06.06.2007 18:56