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

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

Восстановить пароль Регистрация
 
TXLib.h
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
16.12.2010, 14:30     Как закрасить шар полностью? #1
Здравствуйте! Мне хотелось закрасить шар полностью, но при использовании команды 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 зашёл, благодетель мой))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 14:30     Как закрасить шар полностью?
Посмотрите здесь:

C++ Как закрасить Rectangle
C++ Как закрасить треугольник?
Как закрасить линию? C++
Как закрасить круг (circle) C++
C++ как сократить название пространства имен namespace не убирая полностью ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 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);
    }
}
TXLib.h
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
16.12.2010, 14:49  [ТС]     Как закрасить шар полностью? #3
dihlofos, кстати, я начал разбираться с классамиих ведь можно начать изучать до структур?

Добавлено через 58 секунд
Всё работает
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
16.12.2010, 15:07     Как закрасить шар полностью? #4
Цитата Сообщение от TXLib.h Посмотреть сообщение
их ведь можно начать изучать до структур
Ну в принципе да, если разберётесь с классами, структуры почти автоматически станут понятными)
Yandex
Объявления
16.12.2010, 15:07     Как закрасить шар полностью?
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru