Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35

Зарисовать элипс

25.12.2015, 14:13. Показов 2282. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Такая проблемка. Решила познакомиться с GDI. Столкнулась с первой проблемой. Как зарисовать чёртов эллипс?!)))
Просмотрела много страниц, попробовала как там - мой эллипс пуст внутри. Растолкуйте, пожалуйста!
Код.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
 
 
static TCHAR szWindowClass[] = _T("win32app");
 
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");
 
HINSTANCE hInst;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
 
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Call to RegisterClassEx failed!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    hInst = hInstance;
 
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        900, 900,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
    ShowWindow(hWnd,
        nCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;;
    HDC hdc;
    HBRUSH hBrush;
 
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        hBrush = CreateSolidBrush(RGB(255, 255, 0));
        Ellipse(hdc, 100, 100, 200, 300);
        ValidateRect(hWnd, NULL);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
 
    return 0;
}
Работаю в студии 2012.
Всем заранее спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2015, 14:13
Ответы с готовыми решениями:

задан элипс с центром в точке
Народ кто может помочь по курсовой стучите в асю 358-128-757. Она не такая сложная ток я не как не могу разобраться сам в С++ т.к. я...

Зарисовать 1 пиксель
Нужно закрасить 1 пиксель, делаю так. Однако закрашивается 2*2 g.DrawRectangle(myPen, new Rectangle(0,0, 1, 1)); как можно исправить?

Зарисовать рисунок, паскаль
Вот код, надо зарисовать так, как показано на рисунке. Program Graphicus; Uses GraphABC; Begin {крыша} Line...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
25.12.2015, 18:12
Лучший ответ Сообщение было отмечено Тамика как решение

Решение

C++
1
2
3
4
5
6
7
8
9
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        hBrush = CreateSolidBrush(RGB(255, 255, 0));
        SelectObject(ps.hdc, hBrush); // раз
        Ellipse(hdc, 100, 100, 200, 300);
        ValidateRect(hWnd, NULL);
        DeleteObject(hBrush); // два
        EndPaint(hWnd, &ps);
        break;
1
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
28.12.2015, 13:23  [ТС]
volvo, только сейчас запустила код с Вашими правками. Возникла ошибка линковки... Что это может быть?
1>LINK : fatal error LNK1168: cannot open C:\Users\t.muzuka\documents\visual studio 2012\Projects\UbisoftTest\Debug\UbisoftT est.exe for writing

В код кроме Ваших изменений ничего не добавляла.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
28.12.2015, 13:25
А кроме этой другие ошибки в консоли показаны?
Проект перестраивала?
1
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
28.12.2015, 13:32  [ТС]
Hikari, нет, только эта ошибка. Ребилд пробовала делать. Не помогло... Не понимаю.

Добавлено через 5 минут
Hikari, а всё, поняла. У меня завис предыдущий экзешник в процессах. Так-то его не видно, а там, падла, засел. Закрыла процесс - всё заработало! Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2015, 13:32
Помогаю со студенческими работами здесь

Канвас(Элипс и прямоугольник)
Использую в графическом редакторе Canvas. Рисую им ellipse и Rectangle а точне будет if btn7.Down then //Окружность begin ...

Поделить элипс на 4,5,6,7 частей
Не могу понять как это сделать, прошу помощи, интересует сам алгоритм

Нарисовать окружность и элипс
Всем добрый вечер. Может кто нибудь подскажет как изобразить окружность, зная радиус? и как изобразить элипс, зная размеры треугольника,...

Изменить элипс на прямоугольный треугольник
Выполнить задание для элипса было не сложно,а вот с прямоугольным треугольником проблемы,помогите Задание: Фигура движется по...

Пользовательские фигуры: треугольник, элипс и тд
Стоит задача в создании 2-3 разных геометрических фигур: Эллипс, у него будет возможность воздействия на коэфиценты a,b,c, уравнение...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru