Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
#1

GDIPlus и динамический массив для многоугольника - C++

03.05.2014, 17:53. Просмотров 374. Ответов 1
Метки нет (Все метки)

Нигде не нашел решения такой проблемы.
Имеются два вектора vector<int> с одинаковым количеством элементов ArrXY_SIZE:
один с координатами X, второй с координатами Y точек для рисования многоугольника Polygon.

Есть размер массива точек для рисования многоугольника:
const short ARR_Dst_SIZE = ArrXY_SIZE; // Размер динамического массива
Константа ArrXY_SIZE равна размеру векторов.

Есть определение массива Point ArrayDst[ARR_Dst_SIZE] = {Point(0,0)};

Есть функция FillPolygon(mBlueBrush, ArrayDst, ARR_Dst_SIZE);
Спрашивается - как надо или можно заполнить динамический массив ArrayDst элементами векторов, чтобы массив использовался для рисования многоугольника?
Я пытался сделать это с помощью цикла do while, но не могу понять как передать значения элементов массива из цикла в функцию FillPolygon?
Пытался создать двумерный вектор с вложением вектора Y в вектор X. Но функция FillPolygon не работает с векторами.

Добавлено через 3 часа 1 минуту
Дополню свой вопрос кодом:
C++
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
// ============= Заполнение массива точек полигона одномерными векторами ===================
// Создаем одномерный вектор координаты X
std::vector<int>    ArrVecX;
// Инициализируем вектор X пятью точками
ArrVecX.push_back(100);
ArrVecX.push_back(200);
ArrVecX.push_back(150);
ArrVecX.push_back(50);
ArrVecX.push_back(0);
 
// Создаем одномерный вектор координаты Y
std::vector<int>    ArrVecY;
// Инициализируем вектор Y пятью точками
ArrVecY.push_back(100);
ArrVecY.push_back(130);
ArrVecY.push_back(200);
ArrVecY.push_back(200);
ArrVecY.push_back(130);
 
// --- Создаем массив, куда копируются элементы из векторов ---
const short ARR_Dst_SIZE = 5;
Point ArrayDst[] = {
    Point(ArrVecX[0],ArrVecY[0]),
    Point(ArrVecX[1],ArrVecY[1]),
    Point(ArrVecX[2],ArrVecY[2]),
    Point(ArrVecX[3],ArrVecY[3]),
    Point(ArrVecX[4],ArrVecY[4])};
 
// Рисуем полигон
g.FillPolygon(myNavyBlueBrush, ArrayDst, ARR_Dst_SIZE); // Рисуем полигон с синей заливкой
Этот фрагмент работает нормально.
В этом примере 5 точек в массиве, поэтому фрагмент:
C++
1
2
3
4
5
6
Point ArrayDst[] = {
    Point(ArrVecX[0],ArrVecY[0]),
    Point(ArrVecX[1],ArrVecY[1]),
    Point(ArrVecX[2],ArrVecY[2]),
    Point(ArrVecX[3],ArrVecY[3]),
    Point(ArrVecX[4],ArrVecY[4])};
можно написать прямо в тексте программы.
А если точек 10000 в векторах? Как сделать компактную запись такого массива, который инициализируется векторами с огромным количеством элементов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GDIPlus и динамический массив для многоугольника (C++):

Динамический массив для строк - C++
Добрый вечер! Мне нужно обработать текстовый файл, длину строк я заранее не знаю. Язык Си. Знаю, что нужно использовать malloc, а как...

Реализовать динамический массив объектов, учитывая, что параметры для конструктора у каждого объекта разные - C++
Здравствуйте.Чёткого ответа на просторах интернета не нашёл , поэтому пишу сюда. Есть класс, нужен динамический массив объектов этого...

Составить программу, в которой создать динамический массив указателей для сохранения двумерного массива В с N × N целых - C++
Составить программу, в которой создать динамический массив указателей для сохранения двумерного массива В с N × N целых чисел, организовать...

Составить программу для подсчёта суммы чётных элементов двумерной таблицы А размером m×n. Использовать динамический массив. - C++
Составить программу для подсчёта суммы чётных элементов двумерной таблицы А размером m×n. Использовать динамический массив.

Динамический массив объектов(изменить реализацию ввода элементов, через "cin". Для передачи в public) - C++
Вот прога: #include&lt;iostream&gt; using namespace std; class samp { int i,j; public: void set_ij(int a, int b) {i=a, j=b;} ...

Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно иметь следующие - C++
1. Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
05.05.2014, 10:43  [ТС] #2
Тему посмотрели 37 человек, советов нет. Видимо мало кто занимается решением подобной задачи.
Решение однако я нашел. Вот один из вариантов кода, возможно не самый оптимальный, но работоспособный:
C++
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
// ============= Заполнение массива точек полигона одномерными векторами ===================
// Создаем одномерный вектор координаты X
std::vector<int>    ArrVecX;
// Очищаем вектор от мусора и предыдущих значений
ArrVecX.clear();
// Инициализируем вектор X пятью точками
ArrVecX.push_back(100);
ArrVecX.push_back(200);
ArrVecX.push_back(150);
ArrVecX.push_back(50);
ArrVecX.push_back(20);
 
// Создаем одномерный вектор координаты Y
std::vector<int>    ArrVecY;
// Очищаем вектор от мусора и предыдущих значений
ArrVecY.clear();
// Инициализируем вектор Y пятью точками
ArrVecY.push_back(100);
ArrVecY.push_back(130);
ArrVecY.push_back(200);
ArrVecY.push_back(200);
ArrVecY.push_back(130);
 
// --- Создаем массив, куда будем копировать элементы из векторов ---
const short ARR_Dst_SIZE = 5;
Point ArrayDst[ARR_Dst_SIZE];
 
// Заполняем массив элементами из векторов
int i = 0;
do
{
    ArrayDst[i] = Point(ArrVecX[i],ArrVecY[i]);
    ++i;
} while(i < ARR_Dst_SIZE);
 
// Рисуем полигон
g.FillPolygon(myNavyBlueBrush, ArrayDst, ARR_Dst_SIZE); // Рисуем полигон с синей заливкой
Результат на картинке.
0
Миниатюры
GDIPlus и динамический массив для многоугольника  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2014, 10:43
Привет! Вот еще темы с ответами:

Можно ли в классе создавать массив переменной длинны. Например динамический массив? - C++
Динамические массивы привлекают больше. :)

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

динамический массив (Целое число разложить на массив простых множителей) - C++
Доброго времени суток всем. Целое число необходимо разложить на массив простых множителей. Столкнулся с проблемой, мне нужно, чтобы...

Заполнить динамический массив из файла и записать массив обратно в файл - C++
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную которая этот массив запишет в файл=)


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru