Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 16

Как разрисовать рисунок по координатам?

19.10.2021, 21:16. Показов 1967. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую!
Мне нужно разрисовать рисунок.
Через cout сделал самого попугая, а как разукрашивать по координатам, я не знаю.
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
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
 
void SetColor(int text, int background)
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
   void gotoxy(int xp, int yp)   
{ 
COORD new_xy; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); 
new_xy.X = xp; new_xy.Y = yp; 
SetConsoleCursorPosition(hStdOut,new_xy);
 }
 
 
 
int main(int argc, char** argv) {
    system ("cls");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color 16");
   
 
         cout<<"      ####      \n";
        cout<<"    ########    \n";
        cout<<"   ##########   \n";
        cout<<"  ############  \n";
        cout<<"  ############  \n";
        cout<<" ##  ######  ## \n";
        cout<<" #    ####    # \n";
        cout<<" #  # #### #  # \n";
        cout<<" ##   ####   ## \n";
        cout<<"  ### #### ###  \n";
        cout<<"  ############  \n";
        cout<<"   ##########   \n";
        cout<<"  ############  \n";
        cout<<" ############## \n";
        cout<<" ############## \n";
        cout<<" ############## \n";
        cout<<" ############## \n";
        cout<<"################\n";
        cout<<"################\n";
        cout<<"################\n";
        cout<<"     ######     \n";
        cout<<"      ####      \n";
        cout<<"       ##       \n";
        cout<<"       ##       \n";
        cout<<"       ##       \n"; 
     system("pause");
Миниатюры
Как разрисовать рисунок по координатам?   Как разрисовать рисунок по координатам?  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2021, 21:16
Ответы с готовыми решениями:

Рисунок по координатам
Рисунок по координатам в Delphi координаты есть Дракон (-11;3), (-14;3), (-14;4), (-11;7), (-7;7), (-5;5), (-2;5), (3;4), (4;5),...

Векторный рисунок по координатам
Как создать векторный рисунок если даны координаты ? у меня есть файл в котором записаны координаты , по ним мне надо нарисовать...

Растровый рисунок, как вставить bmp-рисунок в окно на полный экран?
Всем здрасьте! По книге которой я учусь , не понятно описано как вставить какую-нибудь картиночку в окно. Помогите мне , напишите как...

7
Заблокирован
19.10.2021, 21:34
C++
1
SetConsoleTextAttribute(hStdOut,4СтаршихБитаФон4МладшихЦвет);//00xF1 синий на белом
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
20.10.2021, 09:49
Лучший ответ Сообщение было отмечено Vlad0467777 как решение

Решение

Цветной попугай
Середина вроде малость не та, но ясно, как поправить

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
#include <iostream>
#include <cmath>
#include <cstdio>
#include <windows.h>
using namespace std;
 
void SetColor(int background, int text) {
 HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
void gotoxy(int xp, int yp) {
 COORD new_xy; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 new_xy.X = xp; new_xy.Y = yp;
 SetConsoleCursorPosition(hStdOut, new_xy);
}
 
int main() {
 SetConsoleCP (866);
 SetConsoleOutputCP (866);
 SetColor (15,0);
 system("cls");
 system("mode con cols=80 lines=25");
 struct node { int x,y,c; };
 const node parrot[] = {
                                                                    { 6, 0, 0},{ 7, 0, 0},{ 8, 0, 0},{ 9, 0, 0},
                                              { 4, 1, 0},{ 5, 1, 0},{ 6, 1,12},{ 7, 1,12},{ 8, 1,12},{ 9, 1,12},{10, 1, 0},{11, 1, 0},
                                   { 3, 2, 0},{ 4, 2,12},{ 5, 2,12},{ 6, 2,12},{ 7, 2,12},{ 8, 2,12},{ 9, 2,12},{10, 2,12},{11, 2,12},{12, 2, 0},
                        { 2, 3, 0},{ 3, 3,12},{ 4, 3,12},{ 5, 3,12},{ 6, 3,12},{ 7, 3,12},{ 8, 3,12},{ 9, 3,12},{10, 3,12},{11, 3,12},{12, 3,12},{13, 3,0},
                        { 2, 4, 0},{ 3, 4,12},{ 4, 4,12},{ 5, 4,12},{ 6, 4,12},{ 7, 4,12},{ 8, 4,12},{ 9, 4,12},{10, 4,12},{11, 4,12},{12, 4,12},{13, 4,0},
             { 1, 5, 0},{ 2, 5,12},{ 3, 5,15},{ 4, 5,15},{ 5, 5,12},{ 6, 5,12},{ 7, 5,12},{ 8, 5,12},{ 9, 5,12},{10, 5,12},{11, 5,15},{12, 5,15},{13, 5,12},{14, 5, 0},
             { 1, 6, 0},{ 2, 6,15},{ 3, 6,15},{ 4, 6,15},{ 5, 6,15},{ 6, 6,12},{ 7, 6,12},{ 8, 6,12},{ 9, 6,12},{10, 6,15},{11, 6,15},{12, 6,15},{13, 6,15},{14, 6, 0},
             { 1, 7, 0},{ 2, 7,15},{ 3, 7,15},{ 4, 7, 0},{ 5, 7,15},{ 6, 7,12},{ 7, 7,12},{ 8, 7,12},{ 9, 7,12},{10, 7,15},{11, 7, 0},{12, 7,15},{13, 7,15},{14, 7, 0},
             { 1, 8, 0},{ 2, 8,12},{ 3, 8,15},{ 4, 8,15},{ 5, 8,15},{ 6, 8,12},{ 7, 8,12},{ 8, 8,12},{ 9, 8,12},{10, 8,15},{11, 8,15},{12, 8,15},{13, 8,12},{14, 8, 0},
                        { 2, 9, 0},{ 3, 9,12},{ 4, 9,12},{ 5, 9,15},{ 6, 9, 0},{ 7, 9, 0},{ 8, 9, 0},{ 9, 9, 0},{10, 9,15},{11, 9,12},{12, 9,12},{13, 9, 0},
                        { 2,10, 0},{ 3,10,12},{ 4,10,12},{ 5,10,12},{ 6,10, 0},{ 7,10, 0},{ 8,10, 0},{ 9,10, 0},{10,10,12},{11,10,12},{12,10,12},{13,10, 0},
                                   { 3,11, 0},{ 4,11,12},{ 5,11,12},{ 6,11,12},{ 7,11,12},{ 8,11,12},{ 9,11,12},{10,11,12},{11,11,12},{12,11,0},
                        { 2,12, 0},{ 3,12,14},{ 4,12,12},{ 5,12,12},{ 6,12,12},{ 7,12,12},{ 8,12,12},{ 9,12,12},{10,12,12},{11,12,12},{12,12,14},{13,12, 0},
             { 1,13, 0},{ 2,13, 1},{ 3,13,14},{ 4,13,12},{ 5,13,12},{ 6,13,12},{ 7,13,12},{ 8,13,12},{ 9,13,12},{10,13,12},{11,13,12},{12,13,14},{13,13, 1},{14,13, 0},
             { 1,14, 0},{ 2,14, 1},{ 3,14, 1},{ 4,14,12},{ 5,14,12},{ 6,14,12},{ 7,14,12},{ 8,14,12},{ 9,14,12},{10,14,12},{11,14,12},{12,14, 1},{13,14, 1},{14,14, 0},
             { 1,15, 0},{ 2,15, 1},{ 3,15, 1},{ 4,15,12},{ 5,15,12},{ 6,15,12},{ 7,15,12},{ 8,15,12},{ 9,15,12},{10,15,12},{11,15,12},{12,15, 1},{13,15, 1},{14,15, 0},
             { 1,16, 0},{ 2,16, 1},{ 3,16, 0},{ 4,16,12},{ 5,16,12},{ 6,16,12},{ 7,16, 0},{ 8,16, 0},{ 9,16,12},{10,16,12},{11,16,12},{12,16, 0},{13,16, 1},{14,16, 0},
  { 0,17, 6},{ 1,17, 6},{ 2,17, 0},{ 3,17, 6},{ 4,17, 0},{ 5,17, 0},{ 6,17, 0},{ 7,17, 6},{ 8,17, 6},{ 9,17, 0},{10,17, 0},{11,17, 0},{12,17, 6},{13,17, 0},{14,17, 6},{15,17, 6},
  { 0,18, 6},{ 1,18, 6},{ 2,18, 6},{ 3,18, 6},{ 4,18, 6},{ 5,18, 6},{ 6,18, 6},{ 7,18, 6},{ 8,18, 6},{ 9,18, 6},{10,18, 6},{11,18, 6},{12,18, 6},{13,18, 6},{14,18, 6},{15,18, 6},
  { 0,19, 6},{ 1,19, 6},{ 2,19, 6},{ 3,19, 6},{ 4,19, 6},{ 5,19, 6},{ 6,19, 6},{ 7,19, 6},{ 8,19, 6},{ 9,19, 6},{10,19, 6},{11,19, 6},{12,19, 6},{13,19, 6},{14,19, 6},{15,19, 6},
                                                         { 5,20, 0},{ 6,20,12},{ 7,20,12},{ 8,20,12},{ 9,20,12},{10,20, 0},
                                                                    { 6,21, 0},{ 7,21,12},{ 8,21,12},{ 9,21, 0}
 
 };
 int size = sizeof(parrot)/sizeof(parrot[0]);
 unsigned char fill = 219;
 for (int i=0; i < size; i++) {
  SetColor(15, parrot[i].c);
  gotoxy (parrot[i].x, parrot[i].y);
  cout << fill;
 }
 SetColor(15,0);
 gotoxy (0,22);
 system("pause");
 return 0;
}
1
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 16
20.10.2021, 09:59  [ТС]
ПерС, Спасибо большое!!!
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
20.10.2021, 14:59
Vlad0467777, я сделал вам небольшую заготовку на SFML. Может вам дадут следующее задание - рисовать не в консоли, или вы сами захотите. У меня в примере рисуется сетка из линий и квадраты (красный, зелёный, синий). Я посчитал количество квадратов и сделал сетку, как на рисунке.

Я взял цвета из вашего рисунка пипеткой в графическом редакторе и создал дня них переменные:

C++
1
2
3
4
5
6
7
8
9
10
    // Colors
    const sf::Color gridColor(sf::Color(185, 185, 185));
    const sf::Color borderColor(sf::Color(7, 7, 7));
    const sf::Color bodyColor(sf::Color(248, 62, 79));
    const sf::Color wingsColorTop(sf::Color(248, 241, 118));
    const sf::Color wingsColorBottom(sf::Color(1, 129, 215));
    const sf::Color boughColor(sf::Color(120, 73, 51));
    const sf::Color pupilOfTheEyeColor(sf::Color(7, 7, 7));
    const sf::Color whiteOfTheEyeColor(sf::Color(255, 255, 255));
    const sf::Color beakColor(sf::Color(7, 7, 7));


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
#include <SFML/Graphics.hpp>
 
int main()
{
    const int windowWidth = 330;
    const int windowHeight = 435;
    sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight, 32), "Parrot in SFML",
                            sf::Style::Titlebar | sf::Style::Close);
    window.setFramerateLimit(60);
 
    // Colors
    const sf::Color gridColor(sf::Color(185, 185, 185));
    const sf::Color borderColor(sf::Color(7, 7, 7));
    const sf::Color bodyColor(sf::Color(248, 62, 79));
    const sf::Color wingsColorTop(sf::Color(248, 241, 118));
    const sf::Color wingsColorBottom(sf::Color(1, 129, 215));
    const sf::Color boughColor(sf::Color(120, 73, 51));
    const sf::Color pupilOfTheEyeColor(sf::Color(7, 7, 7));
    const sf::Color whiteOfTheEyeColor(sf::Color(255, 255, 255));
    const sf::Color beakColor(sf::Color(7, 7, 7));
 
    // Grid
    // Horizontal lines
    const int amountOfHorizontalLines = 30;
    sf::Vertex horizontalLines[amountOfHorizontalLines * 2];
    const int gridStep = 15;
    int x = 0;
    int y = 0;
    int vertexIndex = 0;
    for (unsigned int i = 0; i < amountOfHorizontalLines; i++)
    {
        horizontalLines[vertexIndex] = sf::Vertex(sf::Vector2f(x, y));
        horizontalLines[vertexIndex++].color = gridColor;
 
        horizontalLines[vertexIndex] = sf::Vertex(sf::Vector2f(windowWidth, y));
        horizontalLines[vertexIndex++].color = gridColor;
 
        y += gridStep;
    }
    // Vertical lines
    const int amountOfVerticalLines = 23;
    sf::Vertex verticalLines[amountOfVerticalLines * 2];
    x = 0;
    y = 0;
    vertexIndex = 0;
    for (unsigned int i = 0; i < amountOfVerticalLines; i++)
    {
        verticalLines[vertexIndex] = sf::Vertex(sf::Vector2f(x, y));
        verticalLines[vertexIndex++].color = gridColor;
 
        verticalLines[vertexIndex] = sf::Vertex(sf::Vector2f(x, windowHeight));
        verticalLines[vertexIndex++].color = gridColor;
 
        x += gridStep;
    }
 
    sf::RectangleShape rect;
    rect.setSize(sf::Vector2f(gridStep, gridStep));
    rect.setFillColor(sf::Color(255, 0, 0));
 
    struct Cell
    {
        Cell(sf::Vector2f pos, sf::Color color)
        {
            this->pos = pos;
            this->color = color;
        }
        sf::Vector2f pos;
        sf::Color color;
    };
 
    const int amountOfCells = 3;
    const int cellSize = gridStep;
    Cell cells[amountOfCells] = {
        Cell(sf::Vector2f(0 * cellSize, 0), sf::Color(255, 0, 0)),
        Cell(sf::Vector2f(1 * cellSize, 0), sf::Color(0, 255, 0)),
        Cell(sf::Vector2f(2 * cellSize, 0), sf::Color(0, 0, 255))
    };
 
    sf::Event event;
    while (window.isOpen())
    {
        while(window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {
                window.close();
            }
        }
 
        window.clear(sf::Color::White);
 
        for (unsigned int i = 0; i < amountOfCells; i++)
        {
             rect.setPosition(cells[i].pos);
             rect.setFillColor(cells[i].color);
             window.draw(rect);
        }
        window.draw(horizontalLines, amountOfHorizontalLines * 2, sf::Lines);
        window.draw(verticalLines, amountOfVerticalLines * 2, sf::Lines);
 
        window.display();
    }
 
    return 0;
}
Настройки для Qt Creator:

Code
1
2
3
4
5
6
7
8
9
CONFIG += c++11
CONFIG -= console
 
INCLUDEPATH += "E:\Libs\SFML-2.5.1-mingw-32bit\include"
LIBS += -L"E:\Libs\SFML-2.5.1-mingw-32bit\lib"
LIBS += -lsfml-graphics -lsfml-system -lsfml-window
 
SOURCES += \
    main.cpp
Миниатюры
2
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 16
20.10.2021, 16:32  [ТС]
8Observer8, И Вам большое спасибо!
1
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
20.10.2021, 17:19
Vlad0467777, дам вам информацию на будущее, может пригодится. Можно перерисовать рисунок в бесплатном редакторе Tiled (см. gif-анимацию) и экспортировать результат из Tiled в текстовый файл CSV (либо XML, либо JSON). В программе распарсить файл. Тогда можно будет менять что-то в таких рисунках без изменения кода, это может быть попроще в работе, чем создавать и менять каждый квадрат в коде вручную.



Миниатюры
0
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 16
20.10.2021, 21:54  [ТС]
8Observer8, Благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.10.2021, 21:54
Помогаю со студенческими работами здесь

Как создать рисунок и сохранить его в bmp (точечный рисунок)
Здравствуйте, пишу свой графический редактор и вот не знаю как из того что я рисую в графе сконструировать рисунок , а потом сохранить его...

Как на фоновый рисунок наложить второй рисунок
Как на рисунок (фон) наложить текст с таблицей? Сама таблица есть не в текстовом формате (в Word), а в виде скриншота, т.е. картинка.

На листе находится рисунок; можно ли сохранить этот рисунок из книги, как отдельный bmp или jpg файл?
1. На листе находится рисунок. Можно ли, сохранить этот рисунок из книги как отделений Bmp или jpg файл. И еще один вопрос: Можно...

Отрисовка 2D и 3D примитивов по координатам кликом мыши и по координатам в командной строки
Добрый день. ПОМОГИТЕ ПОЖАЛУЙСТА УМОЛЯЮ. Стоит задача: Отрисовка 2D и 3D примитивов. Организовать диалог с пользователем через...

Графический Рисунок(нужно составить рисунок на С++ в форме желтой звезды)
нужно составить рисунок на С++ в форме желтой звезды


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru