Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Proidoha
509 / 345 / 27
Регистрация: 04.11.2013
Сообщений: 1,462

Оптимизация передачи классов и методов и их обработки в разных модулях

11.11.2014, 14:35. Просмотров 387. Ответов 1
Метки (Все метки)

Доброго времени суток.

Работаю над сложной программой, позволяющей считать таблицу Excel вида "номер-коордХ-коордY-вид точки" и отстроить все это в CorelDraw.

Нужна помощь с оптимизацией построения именно видов точек (круг, квадрат и т.п, последний параметр в таблице). Видов может быть от 1 до 5 , каждый вид имеет 4 параметра: форма, размер, толщина линии, цвет заливки.
Параметры задаются при начальной настройке программы юзером вот в такой форме:

Вложение 453002

Соответственно, имеем 5 параметров:
k (integer) - количество видов (от 1 до 5)
F (string) - форма точки
R (double) - размер
O (double) - толщина линии
Fi (string) - цвет заливки

Создается переменная point класса Object

Дальше следуют преобразования:
В зависимости от значения F мы выбираем ?метод? построения. Методы выглядят так:
(Команды из VBA CorelDraw, разбираться в них не надо, просто примите как данность что методы именно такие)

vb.net
1
2
3
4
5
6
7
  
If F = "Кружок" Then
   point = LayerPoints.СreateElipse(R / 2, R / 2, -R / 2, -R / 2)
ElseIf F = "Квадрат" Then
   point = LayerPoints.CreatePolygon2(0, 0, R, 4)
 
'' И так далее. Для каждой формы точки - свой метод. point - переменная класса Object
Размер (R) и толщина линии (O) передаются без изменений, причем размер указывается в ?методах? построения (см выше), а толщина линии устанавливается отдельной командой:

vb.net
1
point.Outline = O
Fi лучше всего преобразовать в RGB

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Private Function ColorShape(ByVal Fi As String)
 
 
        Dim RGB_R As Integer
        Dim RGB_G As Integer
        Dim RGB_B As Integer
 
        If Fi = "Без заливки" Then
            RGB_R = 111
            RGB_G = 111
            RGB_B = 111
 
 
        ElseIf Fi = "Черный" Then
            RGB_R = 0
            RGB_G = 0
            RGB_B = 0
 
'' и т.д.
 
     End If
 
        Return RGB(RGB_R, RGB_G, RGB_B)
    End Function
Метод заливки тоже свой:
vb.net
1
point.Fill.UniformColor.RGBAssign(colorShape)
Это основные параметры. Что я хочу:
В нужном месте программы (в другом модуле) я Говорю "построить точку вида 1" - и программа выдает сразу весь комплект методов с заданными параметрами, например
vb.net
1
2
3
4
5
6
7
point = LayerPoints.СreateElipse(1,25, 1,25, -1,25, -1,25) '' ставим кружок диаметром 2.5 в току с координатами 0;0
point.Outline = 0,1 ''устанавливаем толщину линии 0.1 мм
point.Fill.UniformColor.RGBAssign(0,0,0) '' делаем черную заливку
 
'' после этого мне остается только поставить точку по координатам:
 
point.SetPosition(x, y)
Соответственно, если я скажу "поставить точку вида 2" то набор параметров другой, причем в первой строке - еще и метод другой

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

Особо уделите, пожалуйста, внимание операторам public, private и т.п. - я в них плаваю.

Сейчас у меня в рабочем теле программы нереальное количество if, причем вызываются они с каждой новой точкой, а хотелось бы оптимизировано - один раз прогнал по If-ам до начала работы основного тела программы - и получил коллекцию методов, к которой только правильно обратиться.

Добавлено через 2 часа 0 минут
Сложно описал.
Короче, нужно создать и эффективно пользоваться публичным массивом из 5 элементов, в каждом элементе 4 параметра:
1 параметр - метод
2 и 3 - число
4 - RGB

При вызове элемента массива должна создаваться глобальная переменная point as object, к которой применяется метод из параметра 1 (с использованием параметра 2 внутри метода), затем применяются еще 2 сторонних метода с параметрами 3 и 4, и еще один метод с двумя внешними переменными Х и Y.

Надеюсь, так понятнее.

Вернуться к обсуждению:
Оптимизация передачи классов и методов и их обработки в разных модулях
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2014, 14:35
Готовые ответы и решения:

Оптимизация хранения и передачи информации в модульном приложении
Доброго времени! У меня есть несколько написанных программ в виде отдельных...

Вызов всех повторяющихся методов из разных классов
Как сделать так что бы при добавлении нового класса не приходилость менять код...

Вызов методов с одинаковыми именами для разных классов
В функцию func можно передать один из двух классов A или B. У них есть функции...

Возможно ли использовать один массив в разных модулях?
Возможно ли использовать один массив в разных модулях? Количество элементов...

Как использовать одну переменную в разных модулях
Дорогие форумяне! Есть макросы, имена которых добавлены в событие листа, но с...

1
Другие темы раздела
Visual Basic .NET Запрет на запуск сторонней программы http://www.cyberforum.ru/vb-net/thread1297420.html
Здравствуйте!!! Помогите пожалуйста с вопросом: необходимо при запуске программы запретить запуск калькулятора в виндусе. После закрытия программы разрешить!!! Спасибо!!!
Visual Basic .NET Как проверить съемный носитель на факт готовности Кароч,есть проблема! задрало уже! программа на всех дисках ищет выбраный файл,но прикол в том что когда попадается диск что тупит или просто пустой он выдает ошибку что диск не готов,как обойти... http://www.cyberforum.ru/vb-net/thread1297307.html
Невозможно привести аргумент expression к типу textbox Visual Basic .NET
Здравствуйте! При написании программы а-ля "калькулятор" выскакивает ошибка, указанная в заголовке. Программный код прилагается. Что я делаю не так, и как это исправить? Заранее спасибо за помощь. ...
Поворот PictureBox по часовой стрелке Visual Basic .NET
Как организовать вращение PictureBox по часовой стрелке ?
Visual Basic .NET Обработка события при нажатии на DataGridViewButtonColumn http://www.cyberforum.ru/vb-net/thread1297009.html
Доброе время суток! подскажите как сделать разное события на кнопку и чтобы менялась сам кнопки в строке где например в базе поменялся статус вот что типо такого ниже приведено до чего я дошол а...
Visual Basic .NET Закрасить ячейки, лежащие выше главной и дополнительной диагоналей красным цветом Помогите пжл на VB.Net Дана матрица NxN (4<N<10). Закрасить ячейки, лежащие выше главной и дополнительной диагоналей красным цветом. Наработки: Dim i, j As Integer For i = 0 To n ... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru