Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
254 / 237 / 44
Регистрация: 04.12.2013
Сообщений: 1,029
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте, вот есть код, задача: изобразить этот эллипс, чтобы он мигал - желтый/черный, в общем такая мигающая "растровая" лампочка. Фрагмент кода предоставлен ниже, попробовал сделать этот через цикл - если счетчик четный - 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2014, 01:18
Ответы с готовыми решениями:

Построить темно серый ромб и желтый эллипс
РЕбят помогите. Нужно построить темно серый ромб и желтый эллипс. Заранее спасибо

Как сделать чтобы курсор не мигал в LabeledEdit (или Edit)?
На форме есть LabeledEdit LabeledEdit1.ReadOnly := true; ... procedure...

Изобразить на экране эллипс (MFC)
Используя библиотеку классов MFC, изобразить на экране эллипс, который увеличивается в размерах на...

Изобразить окружность и показать ее сжатие в эллипс
Изобразить окружность и показать ее сжатие в эллипс.

2
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
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;
        }
    }
0
254 / 237 / 44
Регистрация: 04.12.2013
Сообщений: 1,029
16.05.2014, 01:39  [ТС] 3
outoftime, я немного не понял, куда здесь вставить часть с рисованием?
0
16.05.2014, 01:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2014, 01:39
Помогаю со студенческими работами здесь

Как зарисовать квадрат, и сделать так, чтобы он мигал по кругу с интервалом 1-4 сек
как зарисовать квадраты . И сделать так что бы они мигали по кругу с интервалом 1-4 сек. Помогите...

куда вставить фокус в проге, чтобы при ее запуске сразу курсор мигал?
textBoxSource.Focus(); так работает, но если вставлять в { ...

Как изобразить этот текст ?
Браузер видит это как Heading ....я просто хочу изображать &lt;h2&gt;Название&lt;/h2&gt; как текст в браузере....

Светофор. Сделать так, чтобы красный, желтый и зеленый цвета мигали.
Есть такой скрипт для светлофора: &lt;div class=&quot;main_block&quot;&gt; &lt;div class=&quot;red active...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru