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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 71, средняя оценка - 4.90
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
#1

Как нарисовать круг - C++

07.04.2013, 13:30. Просмотров 11205. Ответов 37
Метки нет (Все метки)

Нужно нарисовать круг
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2013, 13:30     Как нарисовать круг
Посмотрите здесь:

Нарисовать круг в классе - C++
Нужно нарисовать круг в классе чтоб можна било в консоле задавать его 1)цвет 2)радиус 3) и угол на которий я захочю его повернуть!

Нарисовать круг C++ (для чайников) - C++
Добрый день! Я, вообще, новичок в программировании, в том числе и на C ++. Я использую CodeBlocks+MinGW. Мне нужно нарисовать круг.... В...

Нарисовать круг через цикл - C++
Народ, салют. У меня уже бошка кипит, не могу никак поймать "озарение". Нужно нарисать круг при помощи цикла "for" ну или while. С...

Нарисовать цветной круг. Ошибка компиляции - C++
Доброго времени суток! Помогите, пожалуйста, разобраться с темной магией Мне нужно нарисовать цветовой круг на плюсах. Как только начал...

Выведено изображение, нужно на нем нарисовать по фигуру (квадрат, круг) - C++
Выведено изображение, нужно на нем нарисовать по фигуру (квадрат, круг). размер и положение я должен выбрать.

С помощью циклов нарисовать символами "звездочка" куб и круг - C++
Здравствуйте! Задачка сама по себе не сложная, но мозг ломает.. Помогите решить, пожалуйста!! Нужно с помощью циклов нарисовать символами...

Как закрасить круг (circle) - C++
Как закрасить круг в любой цвет, не могу найти таких ф-ций, setfillstyle не подходит

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 816
Регистрация: 27.09.2012
Сообщений: 18,055
Записей в блоге: 3
Завершенные тесты: 1
07.04.2013, 16:57     Как нарисовать круг #16
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
#include <windows.h>
#include <iostream>
 
int InputInteger(const char * str, int min, int max){
    int x;
    std::cout<<str;
    bool ErrorFlag;
    do{
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin>>x;
        ErrorFlag=!std::cin.good() || x< min|| x>max;
        if(ErrorFlag){
            std::cout<<"Error. "<<str;
        }
    }while(ErrorFlag);
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    return x;
}
 
int main(){
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    RECT temp;
    GetClientRect(hWnd,&temp);
    HDC hBufferDC=CreateCompatibleDC(hDC);
    HBITMAP hBufferBmp=CreateBitmap(temp.right,temp.bottom,1,32,NULL);
    HBITMAP hBufferBmpOld=(HBITMAP)SelectObject(hBufferDC,hBufferBmp);
    FillRect(hBufferDC,&temp,(HBRUSH)GetStockObject(WHITE_BRUSH));
    std::cout<<"Enter color:\n";
    int r,g,b;
    r=InputInteger("Enter R value[0,255]:",0,255);
    g=InputInteger("Enter G value[0,255]:",0,255);
    b=InputInteger("Enter B value[0,255]:",0,255);
    system("cls");
    LOGBRUSH logBrush;
    logBrush.lbStyle=
    logBrush.lbHatch=NULL;
    logBrush.lbColor=0;
    //HBRUSH hBrush=CreateSolidBrush(RGB(r,g,b));
    HBRUSH hBrush=(HBRUSH)GetStockObject(NULL_BRUSH);
    HPEN hPen=CreatePen(PS_SOLID,1,RGB(r,g,b));
    HBRUSH hOldBrush=(HBRUSH)SelectObject(hBufferDC,hBrush);
    HPEN hOldPen=(HPEN)SelectObject(hBufferDC,hPen);
    RECT circle={0,0,100,100};
    size_t step_h=3,step_v=3;
    while(!GetAsyncKeyState(VK_ESCAPE)){
        FillRect(hBufferDC,&circle,(HBRUSH)GetStockObject(WHITE_BRUSH));
        if(GetAsyncKeyState(VK_LEFT)){
            circle.left-=step_h;
            circle.right-=step_h;
        }
        if(GetAsyncKeyState(VK_RIGHT)){
            circle.left+=step_h;
            circle.right+=step_h;
        }
        if(GetAsyncKeyState(VK_DOWN)){
            circle.top+=step_v;
            circle.bottom+=step_v;
        }
        if(GetAsyncKeyState(VK_UP)){
            circle.top-=step_v;
            circle.bottom-=step_v;
        }
        Ellipse(hBufferDC,circle.left,circle.top,circle.right,circle.bottom);
        BitBlt(hDC,0,0,temp.right,temp.bottom,hBufferDC,0,0,SRCCOPY);
        Sleep(10);
    }
    SelectObject(hBufferDC,hOldBrush);
    SelectObject(hBufferDC,hOldPen);
    SelectObject(hBufferDC,hBufferBmpOld);
    //DeleteObject(hBrush);
    DeleteObject(hPen);
    DeleteObject(hBufferBmp);
    DeleteDC(hBufferDC);
    ReleaseDC(hWnd,hDC);
    return 0;
}
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
07.04.2013, 17:33  [ТС]     Как нарисовать круг #17
Croessmah, спс! но я немогу понять как там цвет менять?

Добавлено через 7 минут
Croessmah, обясни пожалуста!

Добавлено через 7 минут
Croessmah, так ти скажеш?

Добавлено через 18 минут
Croessmah, аууу?
RussDragon
12 / 12 / 1
Регистрация: 08.04.2012
Сообщений: 81
07.04.2013, 17:45     Как нарисовать круг #18
Может, если он не отвечает, его не на форуме?
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
07.04.2013, 17:47  [ТС]     Как нарисовать круг #19
Croessmah, ну я не пойму как там задавать цвет?

Добавлено через 19 секунд
RussDragon, так есть вроде!
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 816
Регистрация: 27.09.2012
Сообщений: 18,055
Записей в блоге: 3
Завершенные тесты: 1
07.04.2013, 19:33     Как нарисовать круг #20
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
#include <windows.h>
#include <iostream>
 
int InputInteger(const char * str, int min, int max){
    int x;
    std::cout<<str;
    bool ErrorFlag;
    do{
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin>>x;
        ErrorFlag=!std::cin.good() || x< min|| x>max;
        if(ErrorFlag){
            std::cout<<"Error. "<<str;
        }
    }while(ErrorFlag);
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    return x;
}
 
 
COLORREF GetPenColor(){
    int r,g,b;
    std::cout<<"Enter color:\n";
    r=InputInteger("Enter R value[0,255]:",0,255);
    g=InputInteger("Enter G value[0,255]:",0,255);
    b=InputInteger("Enter B value[0,255]:",0,255);
    return RGB(r,g,b);
}
 
int main(){
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    RECT temp;
    GetClientRect(hWnd,&temp);
    HDC hBufferDC=CreateCompatibleDC(hDC);
    HBITMAP hBufferBmp=CreateBitmap(temp.right,temp.bottom,1,32,NULL);
    HBITMAP hBufferBmpOld=(HBITMAP)SelectObject(hBufferDC,hBufferBmp);
    FillRect(hBufferDC,&temp,(HBRUSH)GetStockObject(WHITE_BRUSH));
    system("cls");
    HBRUSH hBrush=(HBRUSH)GetStockObject(NULL_BRUSH);
    HPEN hPen=CreatePen(PS_SOLID,1,GetPenColor());
    HBRUSH hOldBrush=(HBRUSH)SelectObject(hBufferDC,hBrush);
    HPEN hOldPen=(HPEN)SelectObject(hBufferDC,hPen);
    RECT circle={0,0,100,100};
    size_t step_h=3,step_v=3;
    while(!GetAsyncKeyState(VK_ESCAPE)){
        FillRect(hBufferDC,&circle,(HBRUSH)GetStockObject(WHITE_BRUSH));
        if(GetAsyncKeyState(VK_SPACE)){
            system("cls");
            InvalidateRect(hWnd,&temp,true);
            HPEN hNewPen=CreatePen(PS_SOLID,1,GetPenColor());
            SelectObject(hBufferDC,hNewPen);
            DeleteObject(hPen);
            hPen=hNewPen;
        }
        if(GetAsyncKeyState(VK_LEFT)){
            circle.left-=step_h;
            circle.right-=step_h;
        }
        if(GetAsyncKeyState(VK_RIGHT)){
            circle.left+=step_h;
            circle.right+=step_h;
        }
        if(GetAsyncKeyState(VK_DOWN)){
            circle.top+=step_v;
            circle.bottom+=step_v;
        }
        if(GetAsyncKeyState(VK_UP)){
            circle.top-=step_v;
            circle.bottom-=step_v;
        }
        Ellipse(hBufferDC,circle.left,circle.top,circle.right,circle.bottom);
        BitBlt(hDC,0,0,temp.right,temp.bottom,hBufferDC,0,0,SRCCOPY);
        Sleep(10);
    }
    SelectObject(hBufferDC,hOldBrush);
    SelectObject(hBufferDC,hOldPen);
    SelectObject(hBufferDC,hBufferBmpOld);
    DeleteObject(hPen);
    DeleteObject(hBufferBmp);
    DeleteDC(hBufferDC);
    ReleaseDC(hWnd,hDC);
    return 0;
}
пробел
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
07.04.2013, 20:22     Как нарисовать круг #21
Croessmah, да не завидую я вам в этой теме
Croessmah
07.04.2013, 20:25
  #22

Не по теме:

Цитата Сообщение от Игорь с++ Посмотреть сообщение
Croessmah, да не завидую я вам в этой теме
почему?

Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
07.04.2013, 20:28     Как нарисовать круг #23
Цитата Сообщение от Croessmah Посмотреть сообщение
почему?
потому что у автора столько вопросов , что даже при получение кода переделать под себя не может , и заново обращается к вам , сново и сново
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
07.04.2013, 20:41  [ТС]     Как нарисовать круг #24
Croessmah, та блин ти ище не понял как я задаю чтоб бил синий
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
07.04.2013, 20:44     Как нарисовать круг #25
Lion-, ты хотя бы смотри , что ты набираеш .
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
07.04.2013, 20:44  [ТС]     Как нарисовать круг #26
та ти ище не понял как я задаю сам цвет там появляеца окно вот с етим и что мне в водить в каждую строку?
Enter R value[0,255]:",0,255);
Enter G value[0,255]:",0,255);
Enter B value[0,255]:",0,255);
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 816
Регистрация: 27.09.2012
Сообщений: 18,055
Записей в блоге: 3
Завершенные тесты: 1
07.04.2013, 20:46     Как нарисовать круг #27
R - red(красный)
G - green(зеленый)
B - blue(синий)
Название: Безымянный.png
Просмотров: 161

Размер: 2.4 Кб
Lion-
-1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 68
07.04.2013, 20:51  [ТС]     Как нарисовать круг #28
Croessmah, да ето все харашо канешно) но билоюи канешно харашо еслиб я вибирал просто какой цвет я хочю в консоле например 1)ето красний. 2)ет зелений. 3)ет синий.4)ет салатовий или ище какойто там!) у нас преподи строгие)
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
07.04.2013, 20:57     Как нарисовать круг #29
Lion-, вы структуру RGB знаете ? Открой те paint и посмотри те вот это , точнее поиграйтесь с этими значениями
Миниатюры
Как нарисовать круг  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2013, 21:02     Как нарисовать круг
Еще ссылки по теме:

Как уместить круг и треугольник друг в друге? - C++
как правильно написать формулу? Известны площади круга и равностороннего треугольника. Определить: а) уместится ли круг в...

Как нарисовать на С++ 3D пистолет... - C++
Нарисовать на С++ 3D пистолет, который можно вращать(проверка на трехмерность), и за компанию , чтоб стрелял. Как это написать на Visual...

Как нарисовать полигон - C++
Помогите пожалуйста найти методички и материал для построения.

Как нарисовать окружность - C++
Подскажите, пожалуйста, как нарисовать окружность в Microsoft Visual C++ .:thank_you:

Как нарисовать восьмиугольник? - C++
не получается задать координаты 8-угольника( //--------------------------------------------------------------------------- ...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 816
Регистрация: 27.09.2012
Сообщений: 18,055
Записей в блоге: 3
Завершенные тесты: 1
07.04.2013, 21:02     Как нарисовать круг #30
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
#include <windows.h>
#include <iostream>
 
int InputInteger(const char * str, int min, int max){
    int x;
    std::cout<<str;
    bool ErrorFlag;
    do{
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin>>x;
        ErrorFlag=!std::cin.good() || x< min|| x>max;
        if(ErrorFlag){
            std::cout<<"Error. "<<str;
        }
    }while(ErrorFlag);
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    return x;
}
 
 
COLORREF GetPenColor(){
    const COLORREF colors[]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(0,255,255),RGB(255,255,0)};
    const char * texts[]={"Red","Green","Blue","Light blue","Yellow"};
    size_t size=sizeof(colors)/sizeof(*colors);
    for(int i=0;i<size;++i){
        std::cout<<(i+1)<<") "<<texts[i]<<std::endl;
    }
    return colors[InputInteger("Choose color:",1,size)-1];
}
 
int main(){
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    RECT temp;
    GetClientRect(hWnd,&temp);
    HDC hBufferDC=CreateCompatibleDC(hDC);
    HBITMAP hBufferBmp=CreateBitmap(temp.right,temp.bottom,1,32,NULL);
    HBITMAP hBufferBmpOld=(HBITMAP)SelectObject(hBufferDC,hBufferBmp);
    FillRect(hBufferDC,&temp,(HBRUSH)GetStockObject(WHITE_BRUSH));
    system("cls");
    HBRUSH hBrush=(HBRUSH)GetStockObject(NULL_BRUSH);
    HPEN hPen=CreatePen(PS_SOLID,1,GetPenColor());
    HBRUSH hOldBrush=(HBRUSH)SelectObject(hBufferDC,hBrush);
    HPEN hOldPen=(HPEN)SelectObject(hBufferDC,hPen);
    RECT circle={0,0,100,100};
    size_t step_h=3,step_v=3;
    while(!GetAsyncKeyState(VK_ESCAPE)){
        FillRect(hBufferDC,&circle,(HBRUSH)GetStockObject(WHITE_BRUSH));
        if(GetAsyncKeyState(VK_SPACE)){
            system("cls");
            InvalidateRect(hWnd,&temp,true);
            HPEN hNewPen=CreatePen(PS_SOLID,1,GetPenColor());
            SelectObject(hBufferDC,hNewPen);
            DeleteObject(hPen);
            hPen=hNewPen;
        }
        if(GetAsyncKeyState(VK_LEFT)){
            circle.left-=step_h;
            circle.right-=step_h;
        }
        if(GetAsyncKeyState(VK_RIGHT)){
            circle.left+=step_h;
            circle.right+=step_h;
        }
        if(GetAsyncKeyState(VK_DOWN)){
            circle.top+=step_v;
            circle.bottom+=step_v;
        }
        if(GetAsyncKeyState(VK_UP)){
            circle.top-=step_v;
            circle.bottom-=step_v;
        }
        Ellipse(hBufferDC,circle.left,circle.top,circle.right,circle.bottom);
        BitBlt(hDC,0,0,temp.right,temp.bottom,hBufferDC,0,0,SRCCOPY);
        Sleep(10);
    }
    SelectObject(hBufferDC,hOldBrush);
    SelectObject(hBufferDC,hOldPen);
    SelectObject(hBufferDC,hBufferBmpOld);
    DeleteObject(hPen);
    DeleteObject(hBufferBmp);
    DeleteDC(hBufferDC);
    ReleaseDC(hWnd,hDC);
    return 0;
}
Далее дорабатывайте сами
Yandex
Объявления
07.04.2013, 21:02     Как нарисовать круг
Ответ Создать тему
Опции темы

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