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

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

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

С++2010 и GDI+ не рисует многоугольник - C++

28.11.2013, 16:24. Просмотров 644. Ответов 3
Метки нет (Все метки)

Подскажите, пожалуйста, в чем причина того, что на данном объекте Graphics-наследнике класса Image с именем g,
текст выводится исправно, а другие фигуры рисоваться не хотят?
В частности, мне надо нарисовать многоугольник с тремя вершинами (это для примера, фактически нужны 17 вершин).
Я создал объект myPen типа Pen и массив точек многоугольника PointsArr[3] типа Point.
В строке с функцией DrawPoligon компилятор дает две ошибки:
1. Подсвечивается точка после объекта g:
Отсутствуют экземпляры перегруженная функция "Gdiplus::Graphics:rawPolygon", соответствующие списку элементов.
2. Подсвечивается конец функции между квадратной и круглой скобками:
Слишком мало аргументов в вызове функции.
Что я делаю не так?

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
38
39
///////////////////////////////////////////////////////////////////////////////////////
// Функция рисования на объекте bitmap. Запускается от case WM_PAINT
void OnPaint(HDC hdc, const RECT& rc)
{
    // Все строки - в кодировке Unicode
    WCHAR welcome[]=L"Welcome, GDI+ !";
 
    // Создаем контекст рисования и устанавливаем пиксельную систему координат
    Graphics g(hdc);
    g.SetPageUnit(UnitPixel);
    RectF bounds(0, 0, float(rc.right), float(rc.bottom));
 
    Pen* myPen = new Pen(Color::Red);  // создаю моё перо красного цвета 
 
    // Загружаем фоновое изображение и растягиваем его на все окно
    Image bg(L"BACKGRND.gif");
    g.DrawImage(&bg, bounds);
 
    // Создаем кисть с градиентом на все окно и полупрозрачностью
    LinearGradientBrush brush(bounds, Color(130, 255, 0, 0), Color(255, 0, 0, 255), 
            LinearGradientModeBackwardDiagonal); 
    
    // Готовим формат и параметры шрифта
    StringFormat format;
    format.SetAlignment(StringAlignmentCenter);
    format.SetLineAlignment(StringAlignmentCenter);
    Font font(L"Arial", 48, FontStyleBold);
 
    // Выводим текст приветствия, длина -1 означает, что строка заканчивается нулем
    g.DrawString(welcome, -1, &font, bounds, &format, &brush);
 
    // Создаем массив точек многоугольника
    Point PointsArr[3] = {
        Point(50,50),
        Point(100,25),
        Point(200,5)};
        
    g.DrawPolygon(myPen, PointsArr[3]);    // Рисуем полигон (не рисует!!!)
}
Добавлено через 6 часов 20 минут
Добавлю, что это - консольное приложение, среда - Visual Studio 2010 Professional.

Добавлено через 14 часов 13 минут
Дополню вопрос.
Мне самому надо перегрузить функцию DrawPolygon? Если да, то как?
Или искать перегруженную функцию? Тогда где?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++2010 и GDI+ не рисует многоугольник (C++):

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

подскажите, что рисует быстрее GDI+... - C#
Собственно, прорисовка тормозит. Отображается около 800 объектов, картинка перерисовывается секунд 6... это долго. Вот. Буду очень...

Ошибка в программе, которая рисует многоугольник и считает выпуклый он или нет - Delphi
Программа рисует многоугольник и считает выпуклый он или нет, какой то бред получается,в чем ошибки? unit Unit2; interface ...

Visual Studio 2010 C Graphic Basics (GDI+) - C++/CLI WinForms
День добрый, форумчане. Есть одна задача, а именно : "В PictureBox случайно выбираются 2 точки. Соединить эти 2 точки случайной...

Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI. - C# WPF
Ну собственно весь вопрос в заголовке темы.

В графическом режиме начиная с центра рисует две спирали (по часовой и против), в точках пересечения которых рисует окружность заданного радиуса - Assembler
Написать программу, которая в графическом режиме начиная с центра рисует две спирали (по часовой и против) цвет которых чередуется от 1 до...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
06.12.2013, 20:04  [ТС] #2
Ответа так и нет. Судя по всему и не будет.
Модераторов прошу удалить тему, как не имеющую решения.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
06.12.2013, 20:15 #3
Цитата Сообщение от kotgav Посмотреть сообщение
g.DrawPolygon(myPen, PointsArr[3]); * *// Рисуем полигон (не рисует!!!)
что ты хотел когда написал PointsArr[3]?
ты передаешь четвертый элемент массива,который не существует а должен был передать адрес массива
далее где количество точек которые нужно нарисовать?
вот как ты должен был вызвать
C++
1
g.DrawPolygon(myPen, PointsArr,3);
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
06.12.2013, 23:30  [ТС] #4
Точно! Это я, видать, заработался.
Все получилось и заработало, как в примере, так и в моем проекте.
Большое спасибо! Ответ краткий и по существу!
Тему можно закрывать, вопрос решен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 23:30
Привет! Вот еще темы с ответами:

Составить программу,которая при нажатии,клавиши "д" рисует солнце,при нажатии клавиши "н" рисует луну - Pascal ABC
Помогите пожалуйста сделать

Подключение и работа с базой данных MS Access 2010 в Visual Studio 2010: VB - Visual Basic .NET
Доброго времени суток! Уважаемые гуру програмирования, не моглибы Вы помочь начинающему! Задача: Есть база данный на Access 2010,...

Скачал из Интернета portable Офис 2010. Как с Акцессом 2010 работать? - MS Access
Скачал из Интернета portable Офис 2010. Как с Акцессом 2010 работать? Запускаю, нажимаю открыть, выбираю файл и тишина. Думал пакет битый,...

Плагин 3Dmax SDK 2010 для Visual Studio 2010 - Visual Studio
Не подскажите как ставится плагин 3Dmax SDK 2010 для Visual Studio 2010 Autodesk 3ds Max Design 2010 с поддержкой C++?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2013, 23:30
Ответ Создать тему
Опции темы

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