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

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

Войти
Регистрация
Восстановить пароль
 
Liquil
218 / 203 / 32
Регистрация: 04.12.2013
Сообщений: 916
#1

Изобразить этот эллипс, чтобы он мигал — желтый/черный - C++

16.05.2014, 01:18. Просмотров 235. Ответов 2
Метки нет (Все метки)

Здравствуйте, вот есть код, задача: изобразить этот эллипс, чтобы он мигал - желтый/черный, в общем такая мигающая "растровая" лампочка. Фрагмент кода предоставлен ниже, попробовал сделать этот через цикл - если счетчик четный - 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
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
107
108
109
110
111
112
113
114
#include <windows.h>
#include <iostream>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <conio.h>
 
HDC hdc;
PAINTSTRUCT ps;
POINT point;
COLORREF rgb;
HPEN pen;
HBRUSH hbr;
int N=5;
int i;
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    
    switch(Message) {
        
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        case WM_PAINT: { //рисуем окно
        
            hdc = BeginPaint(hwnd, &ps);
            //рисуем 
            
        //вот тут начинаются неудачи
 
            for (i=0; i<N; i++)
             if (i%2<1) 
              {
              rgb = RGB(255,255,0); 
              pen = CreatePen(PS_SOLID,1,rgb);
              hbr = CreateSolidBrush(rgb);
              SelectObject(hdc, pen); // выбор пера
              SelectObject(hdc, hbr); // выбор кисти
              Ellipse(hdc, 150, 5, 350, 140); 
              DeleteObject(hbr);
              DeleteObject(pen);
              getch();
              }
               else {rgb = RGB(0,0,0); 
                     pen = CreatePen(PS_SOLID,1,rgb);
                     hbr = CreateSolidBrush(rgb);
                     SelectObject(hdc, pen); // выбор пера
                     SelectObject(hdc, hbr); // выбор кисти
                     Ellipse(hdc, 150, 5, 350, 140); 
                     DeleteObject(hbr);
                     DeleteObject(pen);
                     getch();
                    }       
            
            
            // освобождаем дескрипторы
            EndPaint(hwnd, &ps);
            
        
            break;
        }
        
        
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; 
    HWND hwnd; 
    MSG Msg; 
 
    
    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc; 
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    
    
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); 
        wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); 
 
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Пример работы с канвой",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 
        CW_USEDEFAULT, 
        640, 
        480, 
        NULL,NULL,hInstance,NULL);
 
    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
 
    while(GetMessage(&Msg, NULL, 0, 0) > 0) { 
        TranslateMessage(&Msg); 
        DispatchMessage(&Msg); 
        
    }
    return Msg.wParam;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 01:18     Изобразить этот эллипс, чтобы он мигал — желтый/черный
Посмотрите здесь:

Определить, какими пешками можно совершить ход, чтобы черный король не был под ударом ферзей - C++
Задана шахматная доска, содержащая черного короля, черные пешки и белых ферзей. Определить, какими пешками можно совершить ход, чтобы...

класс эллипс - C++
ПОМОГИТЕ ПОЖАЛУЙСТА, начала изучать с++ столкнулась с такой вот задачей...... Определить класс эллипс, продемонстрировать...

Дружественные классы эллипс и круг - C++
Здраствуйте, увадаемые форумчане помогите пожалуйста Задача. 1. Описать независимые классы и определить их методы. Атрибуты и все...

"Красный Тигр" vs. "Желтый Заяц". А каким будет 3005 год? - C++
помогите пожалуйста решить В некоторых странах Дальнего Востока (Китае, Японии и др.) использовался (и неофициально используется в...

Изобразить ромб - C++
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному...

Изобразить движение по спирали - C++
Помогите зделать движение по спирали(на рисунку). Я так понимаю надо двигатса по елипсу и смещать центр, но не знаю как это зделать.

Изобразить похожую фигуру - C++
Изобразить. Я не знаю верно ли я тему указал я с графикой сталкиваюсь 1 раз)

Изобразить полет самолета - C++
написать прогу имитирующую полет самолета по прямой траектории. нажатием кнопки вверх и вниз должен менять траекторию

Как изобразить такой рисунок? - C++
Буду очень благодарен в помощи.

Изобразить график импульсно кодовой модуляции - C++
Необходимо изобразить график импульсно кодовой модуляции. От руки показать могу. Только нужно изобразить на компьютере. Посоветуйте какую...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
507 / 429 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
16.05.2014, 01:36     Изобразить этот эллипс, чтобы он мигал — желтый/черный #2
Liquil, идея вот такая:
C++
1
2
3
4
5
6
7
8
9
    while (!exit)
    {
        int input = get_input();
        // change elips color
        if (input == exit_token)
        {
            exit = true;
        }
    }
Liquil
218 / 203 / 32
Регистрация: 04.12.2013
Сообщений: 916
16.05.2014, 01:39  [ТС]     Изобразить этот эллипс, чтобы он мигал — желтый/черный #3
outoftime, я немного не понял, куда здесь вставить часть с рисованием?
Ответ Создать тему
Опции темы

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