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

Нарисовать круг в классе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ нахождение совершенных числел http://www.cyberforum.ru/cpp-beginners/thread898550.html
Привет всем, вот мой код: #include "iostream" #include "math.h" #include "stdlib.h" #include "time.h" int main() { setlocale(LC_ALL,"Russian"); unsigned long int count=0;
C++ Шаблон нахождения максимального элемента в массиве Доброго всем дня.. В общем проблема. Ничерта не могу понять в шаблонах (С++). Суть задания - создание шаблона для нахождения максимального элемента в массиве. Заранее Всем огромная благодарность. http://www.cyberforum.ru/cpp-beginners/thread898546.html
C++ STL контейнер set, вставка элементов
Уважаемые админы.Снова прошу о помощи. Необходимо в множество bred,начиная с позиции n, вставить элементы из множества new_bred. #include <iostream> #include <set> using namespace std; set <int> enter_set(int n, int f); void show_set(set <int> s); // заполнение контейнера set <int> enter_set(int n, int f)
Связывание библиотек C++
Допустим есть решение из 4 проектов- Common, A , B и Program. Common содержит некие общие классы и интерфейсы ( например работа с памятью, потоками ). Не является библиотекой. A и B - некие либы, часть приложения Program, оба используют зависимы Common. Потребность в вариантах сборки: * Динамическая: A.dll, B.dll, Program.exe * Статическая. Program.exe Для примера у нас в Common...
C++ Изменить код С++ http://www.cyberforum.ru/cpp-beginners/thread898514.html
Вот код #include <cstdlib> #include <iostream> #include <math.h> using namespace std; float f1(float x, float y, float z) { return cos(3*x) - 4*x; }
C++ Простая геометрия Недавно решал пачку задач на геометрию, но с одной не справился, даже сейчас не выходит. Постановка: Дан выпуклый многоугольник (т.е. все внутренние углы не больше 180 градусов) и прямая. Прямая режет многоугольник на две части (одна из них может оказаться пустой). Какий площади у этих частей? Входные данные В первой строке записано число N (2 < N < 51) - количество вершин... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 20:15     Нарисовать круг в классе
CTRL - изменение цвета окружности
ALT - изменение цвета внутренностей круга
стрелки - движение окружности
Page Up - увеличение скорости движения
Page Down - уменьшение скорости движения
HOME - увеличение радиуса окружности
END - уменьшение радиуса окружности
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#define _WIN32_WINNT 0x0500
#include <Windows.h>
 
class Circle{
public:
    Circle(int x, int y, int r, bool nullBrush = false):
        mCenterX(x),mCenterY(y),mRadius(r>0?r:0),mPen(NULL),mBrush(NULL){
        
        SetPenColor(RGB(0,0,0));
        SetBrushColor(RGB(0,0,0),nullBrush);
    }
    Circle(int x, int y, int r, COLORREF colorPen, COLORREF colorBrush, bool nullBrush = false):
        mCenterX(x),mCenterY(y),mRadius(r>0?r:0),mPen(NULL),mBrush(NULL){
        
        SetPenColor(colorPen);
        SetBrushColor(colorBrush,nullBrush);
    }
    void SetPenColor(COLORREF color){
        if(mPen)
            DeleteObject(mPen);
        mPen=CreatePen(PS_SOLID,3,color);
    }
 
    void SetBrushColor(COLORREF color,bool nullBrush = false){
        mNullBrush=nullBrush;
        if(mBrush)
            DeleteObject(mBrush);
        if(nullBrush){
            mBrush=static_cast<HBRUSH>(GetStockObject(NULL_BRUSH));
            return;
        }
        mBrush=CreateSolidBrush(color);
    }
 
    int GetX(){
        return mCenterX;
    }
    int GetY(){
        return mCenterY;
    }
    int GetRadius(){
        return mRadius;
    }
    void SetX(int newValue){
        mCenterX=newValue;
    }
    void SetY(int newValue){
        mCenterY=newValue;
    }
    void SetRadius(int newValue){
        if(mRadius>=0)
            mRadius=newValue;
    }
    bool GetTransparent(){
        return mNullBrush;
    }
    void Draw(HDC hDC){
        HPEN hOldPen=static_cast<HPEN>(SelectObject(hDC,mPen));
        HBRUSH hOldBrush=static_cast<HBRUSH>(SelectObject(hDC,mBrush));
 
        Ellipse(hDC,mCenterX-mRadius/2,mCenterY-mRadius/2,mCenterX+mRadius/2,mCenterY+mRadius/2);
 
        SelectObject(hDC,hOldPen);
        SelectObject(hDC,hOldBrush);
    }
 
    ~Circle(){
        if(mPen)
            DeleteObject(mPen);
        if(mBrush)
            DeleteObject(mBrush);
    }
private:
    int mCenterX;
    int mCenterY;
    int mRadius;
    bool mNullBrush;
    HPEN mPen;
    HBRUSH mBrush;
};
 
class Colors{
public:
    Colors():index(0){
    };
    Colors & operator++(){
        if(index < size-1)
            ++index;
        else
            index=0;
        return *this;
    }
    operator COLORREF(){
        return colors[index];
    }
    COLORREF GetColor(){
        return colors[index];
    }
private:
    int index;
    static const int size=10;
    static const COLORREF colors[size];
};
 
const COLORREF Colors::colors[size]={
    RGB(255,0,0),
    RGB(0,255,0),
    RGB(0,0,255),
    RGB(255,255,0),
    RGB(255,0,255),
    RGB(0,255,255),
    RGB(127,127,127),
    RGB(50,80,132),
    RGB(0,87,59),
    RGB(143,87,56)
};
 
 
 
POINT GetDirectionShift(){
    POINT point={0,0};
    point.x-=GetAsyncKeyState(VK_LEFT)!=0;
    point.x+=GetAsyncKeyState(VK_RIGHT)!=0;
    point.y-=GetAsyncKeyState(VK_UP)!=0;
    point.y+=GetAsyncKeyState(VK_DOWN)!=0;
    return point;
}
 
bool GetPenColorChange(){
    return GetAsyncKeyState(VK_CONTROL);
}
bool GetBrushColorChange(){
    return GetAsyncKeyState(VK_MENU);
}
int GetSpeedChanges(){
    int x=GetAsyncKeyState(VK_PRIOR)!=0;
    x-=GetAsyncKeyState(VK_NEXT)!=0;
    return x;
}
 
int GetRadiusChanges(){
    int x=GetAsyncKeyState(VK_HOME)!=0;
    x-=GetAsyncKeyState(VK_END)!=0;
    return x;
}
 
int main(){
    HWND hWnd=GetConsoleWindow();
    HDC hDC=GetDC(hWnd);
    RECT bmpRect;
    GetClientRect(hWnd,&bmpRect);
    HDC hBufferDC=CreateCompatibleDC(hDC);
    HBITMAP hBufferBmp=CreateBitmap(bmpRect.right,bmpRect.bottom,1,32,NULL);
    HBITMAP hBufferBmpOld=(HBITMAP)SelectObject(hBufferDC,hBufferBmp);
    Colors colPen,colBrush;
    Circle myCircle(200,200,80,colPen,colBrush,false);
    POINT shift;
    int speedMult;
    speedMult=1;
    while(!GetAsyncKeyState(VK_ESCAPE)){
        FillRect(hBufferDC,&bmpRect,(HBRUSH)GetStockObject(WHITE_BRUSH));
        myCircle.Draw(hBufferDC);
        BitBlt(hDC,0,0,bmpRect.right,bmpRect.bottom,hBufferDC,0,0,SRCCOPY);
        shift=GetDirectionShift();
        if(GetPenColorChange()){
            myCircle.SetPenColor(++colPen);
        }
        if(GetBrushColorChange()){
            myCircle.SetBrushColor(++colBrush,myCircle.GetTransparent());
        }
        speedMult+=GetSpeedChanges();
        myCircle.SetRadius(myCircle.GetRadius()+GetRadiusChanges()*5);
        if(speedMult<0)
            speedMult=0;
        myCircle.SetX(myCircle.GetX()+shift.x*speedMult);
        myCircle.SetY(myCircle.GetY()+shift.y*speedMult);
        Sleep(300);
    }
 
    SelectObject(hBufferDC,hBufferBmpOld);
    DeleteObject(hBufferBmp);
    DeleteDC(hBufferDC);
    ReleaseDC(hWnd,hDC);
}
Без комментариев...
 
Текущее время: 10:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru