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

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

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

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

28.11.2013, 16:24. Просмотров 666. Ответов 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? Если да, то как?
Или искать перегруженную функцию? Тогда где?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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 до...

3
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
06.12.2013, 20:04  [ТС] #2
Ответа так и нет. Судя по всему и не будет.
Модераторов прошу удалить тему, как не имеющую решения.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
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
1
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
06.12.2013, 23:30  [ТС] #4
Точно! Это я, видать, заработался.
Все получилось и заработало, как в примере, так и в моем проекте.
Большое спасибо! Ответ краткий и по существу!
Тему можно закрывать, вопрос решен.
0
06.12.2013, 23:30
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 работать? Запускаю, нажимаю открыть, выбираю файл и тишина. Думал пакет битый,...

Разбор примера с книги : Троелсен Э. - C# 2010 и платформа .NET 4 - 2010 - C#
В примере сказано, что "Обратите внимание, что поля класса Employee определены с ключевым словом private. С учетом этого, поля empName,...


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

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

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