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

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

Восстановить пароль Регистрация
 
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
28.11.2013, 16:24     С++2010 и GDI+ не рисует многоугольник #1
Подскажите, пожалуйста, в чем причина того, что на данном объекте 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? Если да, то как?
Или искать перегруженную функцию? Тогда где?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
06.12.2013, 20:04  [ТС]     С++2010 и GDI+ не рисует многоугольник #2
Ответа так и нет. Судя по всему и не будет.
Модераторов прошу удалить тему, как не имеющую решения.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
06.12.2013, 20:15     С++2010 и GDI+ не рисует многоугольник #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  [ТС]     С++2010 и GDI+ не рисует многоугольник #4
Точно! Это я, видать, заработался.
Все получилось и заработало, как в примере, так и в моем проекте.
Большое спасибо! Ответ краткий и по существу!
Тему можно закрывать, вопрос решен.
Yandex
Объявления
06.12.2013, 23:30     С++2010 и GDI+ не рисует многоугольник
Ответ Создать тему
Опции темы

Текущее время: 03:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru