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

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

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

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

16.12.2010, 14:30. Просмотров 658. Ответов 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 зашёл, благодетель мой))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 14:30     Как закрасить шар полностью?
Посмотрите здесь:

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

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

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

Как закрасить круг (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 =...

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

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

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

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

Как можно временно полностью выключить часть кода в проекте - C++
Добрый день. Вопрос о том, как можно временно полностью выключить часть кода в проекте. Пример: проект состоит из следующих...

как сократить название пространства имен namespace не убирая полностью ? - C++
Существует ли какой-нибудь способ сократить путь во вложенном пространстве имен путем замены на другое более короткое название, но...

Как полностью перезапустить программу из самой же программы? Не сбросить все параметры - C++
Имеется достаточно длинная программа. Вся программа содержится в main() с использованием case. Нужно полностью ребутнуть всю программу,...


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

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

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

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