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

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

Войти
Регистрация
Восстановить пароль
 
TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
#1

Как закрасить шар полностью? - C++

16.12.2010, 14:30. Просмотров 676. Ответов 3
Метки нет (Все метки)

Здравствуйте! Мне хотелось закрасить шар полностью, но при использовании команды SetFillColor закрашивался фон. Где у меня в логике ошибка??

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
#include "TXLib.h"
 
void DrawCircle (int x, int y, int r);
void Draw2Circle (int x2, int y2, int r);
void MoveCircle (int x, int y, int v, int dx, int dy, int r, int x2,
                 int y2,int v2, int dx2, int dy2, int x3, int y3,
                 int v3, int dx3, int dy3);
 
 
int main()
{
        txCreateWindow (500, 500);
        MoveCircle (200, 300, 10, 1, 1, 20, 150, 450, 15, - 1, - 1, 100,
                    50, 20, -2, 2);
}
 
void DrawCircle (int x, int y, int r)
{ 
        txSetColor (TX_GREEN);
        txSetFillColor (TX_BLACK);
        txCircle (x, y, r);
}
 
void Draw2Circle (int x2, int y2, int r)
{
        txSetColor (TX_YELLOW);
        txCircle (x2, y2, r);
}       
 
void Draw3Circle (int x3, int y3, int r)
{
        txSetColor (TX_RED);
        txCircle (x3, y3, r);
}        
        
void MoveCircle (int x, int y, int v, int dx, int dy, int r, int x2,
                 int y2,int v2, int dx2, int dy2, int x3, int y3,int v3,
                 int dx3, int dy3)
{
        while (true)
        {
                txClear ();
                
                x += dx*v;
                y += dy*v;
                
                if (x - r < 0 || x + r > 500)
                {
                        dx = - dx;
                } 
 
                if (y - r < 0 || y + r > 500)
                {
                        dy = - dy;
                }    
               
                 DrawCircle (x, y, r);
                
                 x2 += dx2*v2;
                 y2 += dy2*v2;
                 
                 if (x2 - r < 0 || x2 + r > 500)
                 {
                        dx2 = - dx2;
                 }
                 
                 if (y2 - r < 0 || y2 + r > 500)
                 {
                        dy2 = - dy2;
                 }
                 
                 Draw2Circle (x2, y2, r);
                 
                 x3 += dx3*v3;
                 y3 += dy3*v3;
                 
                 if (x3 - r < 0 || x3 + r > 500)
                 {
                        
                        dx3 = - dx3;
                 }
                 
                 if (y3 - r < 0 || y3 + r > 500)
                 {
                        dy3 = - dy3;
                 }
                 Draw3Circle (x3, y3, r);
                 
                 txSleep (100);
         }
}
Добавлено через 14 минут
О!dihlofos зашёл, благодетель мой))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 14:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как закрасить шар полностью? (C++):

На экране изобразить стрелу и шар. Организовать управление стрелой, для попадания в шар знаками "стрелка влево", "стрелка вправо" - C++
На экране изобразить стрелу и шар. Организовать управление стрелой, для попадания в шар знаками &quot;стрелка влево&quot;, &quot;Стрелка вправо&quot; -...

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

Как закрасить треугольник? - C++
Как мне закрасить треугольники? #include&lt;windows.h&gt; #include&lt;string.h&gt; #define ID_TIMER 1 HBRUSH tbrush; HBRUSH tbrush1; ...

Как закрасить линию? - C++
Вот линия MoveToEx(hdc,0,350,0); LineTo(hdc,700,350); Как сделать чтобы она была красной например?

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

Как закрасить прямоугольник кроме кружков? - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;clocale&gt; using namespace std; class figure { protected: int x = 100, y =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
16.12.2010, 14:39 #2
TXLib.h, а загляните в файл TXLib.h. Найдите функцию txClear(), написано: "Стирает холст текущим цветом заполнения." Т.е. вы установили цвет заполнения, нарисовали сначала окружность, а потом заполнили весь экран этим же цветом. Наверное стоит каждый раз перед использованием txClear() менять цвет заполнения (цвет фона).
Типа вот:
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
#include "TXLib.h"
 
class Circle
{
public:
    Circle(int x, int y, int s, int dx, int dy, int r, COLORREF cl)
    {
        xCoord = x; 
        yCoord = y; 
        speed = s; 
        dirX = dx; 
        dirY = dy; 
        rad = r; 
        color = cl;
    }
    void Move();
    void Draw();
private:
    int xCoord;
    int yCoord;
    int speed;
    int rad;
    int dirX;
    int dirY;
    COLORREF color;
}; 
///////////////////////////////////////////
void Circle::Draw()
{
    txSetColor (color);
    txSetFillColor(color);
    txCircle (xCoord, yCoord, rad);
}
///////////////////////////////////////////
void Circle::Move()
{
    xCoord += dirX * speed;
    yCoord += dirY * speed;
    
    if (xCoord - rad < 0 || xCoord + rad > 500)
    {
        dirX = - dirX;
    } 
 
    if (yCoord - rad < 0 || yCoord + rad > 500)
    {
        dirY = - dirY;
    }    
               
    Draw();
}
///////////////////////////////////////////
int main()
{
    
        txCreateWindow (500, 500);
    
    Circle A(200, 300, 10, 1, 1, 20, TX_RED);
    Circle B(150, 400, 15, -1, -1, 20, TX_GREEN);
    while (true)
    {
        txSetFillColor (TX_BLACK); // устанавливаем цвет фона
        txClear();  // и заполняем им весь холст
        A.Move();
        B.Move();
        txSleep (100);
    }
}
1
TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
16.12.2010, 14:49  [ТС] #3
dihlofos, кстати, я начал разбираться с классамиих ведь можно начать изучать до структур?

Добавлено через 58 секунд
Всё работает
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
16.12.2010, 15:07 #4
Цитата Сообщение от TXLib.h Посмотреть сообщение
их ведь можно начать изучать до структур
Ну в принципе да, если разберётесь с классами, структуры почти автоматически станут понятными)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2010, 15:07
Привет! Вот еще темы с ответами:

как полностью выйти из программы? - C++
есть программа, в которой цикл. необходимо, чтобы при определенном значении строки программа закрывалась. close(0), exit (0) не работает....

Как полностью будет выглядеть программный - C++
Даны две квадратные матрицы А и В порядка n и m соответственно. Вывести на экран положительные элементы побочной диагонали каждой матрицы.

Как полностью считать текстовый файл в массив символов? - C++
ifstream file(name); char line; char *text = new char; char symbol; int i = 0; while (!file.eof()) { file.getline(line,...

Как записать числовую матрицу в текстовый файл полностью? - C++
Всем доброго времени суток! У меня в лабе есть три задания: записать матрицу в текстовый файл, записать по рядкам, записать по элементам....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.12.2010, 15:07
Ответ Создать тему
Опции темы

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