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

Как нарисовать такую фигуру?

20.06.2016, 16:04. Показов 1182. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Название: C8UsA4-sUmw.jpg
Просмотров: 78

Размер: 2.3 Кб Как нарисовать вот такую фигуру или типо такой главное код нужен хоть прямоугольник. Пожалуйста помогите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2016, 16:04
Ответы с готовыми решениями:

Как нарисовать фигуру и двигать ее мышью?
Как нарисовать геометрическую фигуру (треугольник, квадрат, многоугольник) в окне? И как сделать...

Нарисовать фигуру
Нарисовать фигуру нижнюю справа которая на рисунке там все описано:

Нарисовать фигуру
Товарищи, кто знает как реализовать такую фигуру с помощью языков программирования, помогите...

Нарисовать фигуру C++
Помогите. Нужно вывести фигуру, размер которой (общее кол-во строчек) будет задаваться в консоли....

15
92 / 81 / 57
Регистрация: 19.02.2016
Сообщений: 336
20.06.2016, 16:23 2
Посмотри ANSI коды и через char реализовывай.
0
0 / 0 / 1
Регистрация: 06.12.2015
Сообщений: 215
20.06.2016, 16:25  [ТС] 3
мне бы пример какой нибудь
0
92 / 81 / 57
Регистрация: 19.02.2016
Сообщений: 336
20.06.2016, 16:32 4
Ну как-то так.
Таблица символов - http://cppstudio.com/post/276/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
void main()
{
    char b = 220;
    cout << b << "\t\t" << b<< endl;
    cout << "\t" << b << "\t" << endl;
    cout << b << "\t\t" << b << endl;
    cout << "\t" << b << "\t" << endl;
    cout << b << "\t\t" << b << endl;
    cout << "\t" << b << "\t" << endl;
    cout << b << "\t\t" << b << endl;
    cout << "\t" << b << "\t" << endl;
    cout << b << "\t\t" << b << endl;
    cout << "\t" << b << "\t" << endl;
    system("pause");
}
Добавлено через 2 минуты
Лучше, кстати, реализовывать, по-моему, через printf
0
0 / 0 / 1
Регистрация: 06.12.2015
Сообщений: 215
20.06.2016, 16:34  [ТС] 5
не так не катит
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.06.2016, 16:42 6
Из линий и дуг составляй, потом середину зальёшь.
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 9
20.06.2016, 17:09 7
idris97 библиотеку SFML можно использовать? Если можно, то вот программа

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
#include <SFML\Graphics.hpp>
#include <Windows.h>
#include <iostream>
 
void FatalError(const std::string &message);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    sf::RenderWindow        window( sf::VideoMode(640, 480), "" );
 
    bool                    result;
    
    sf::Texture             texture;
    result = texture.loadFromFile("Image.png");
    if (!result)
    {
        window.close();
        FatalError("Ошибка открытия файла 'Image.png'");
    }
 
    sf::Sprite              sprite(texture);
    sprite.setPosition(50, 50);
        
    while( window.isOpen() )
    {
        sf::Event       event;
 
        while( window.pollEvent(event) )
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        window.clear();
        window.draw(sprite);
        window.display();
        Sleep(1);                       // Короткий сон для процессора
    }
 
    return 0;
}
 
void FatalError(const std::string &message)
{
    std::cout << message << std::endl;
    std::cout << "Программа будет закрыта." << std::endl;
    system("pause");
    exit(1);
}
В папке с программой должен быть рисунок Image.png
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.06.2016, 19:24 8
prove, как-то ты слишком упростил задачу.
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 9
20.06.2016, 20:25 9
nmcf, если ТС программа нужна только лишь для отчета, чтобы показать результат вывода, можно ею воспользоваться. Результат выглядит хорошо
Миниатюры
Как нарисовать такую фигуру?  
0
nmcf
20.06.2016, 21:19
  #10

Не по теме:

prove, сейчас текст уже никто не проверяет, что ли?

0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
21.06.2016, 09:01 11
Наверное можно как то так
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
#include <SFML/Graphics.hpp>
#include <vector>
 
 
int main()
{
        sf::RenderWindow    window(sf::VideoMode(512, 512), "What is Windows and why it need ?");
        sf::RectangleShape rect;
        rect.setSize(sf::Vector2f(100, 200));
        rect.setPosition(100, 100);
        rect.setFillColor(sf::Color(150, 150, 150));
        std::vector<sf::CircleShape> arrSmallCirShapes;
        std::vector<sf::CircleShape> arrBigCirShapes;
        arrSmallCirShapes.push_back(sf::CircleShape(12)); 
        arrSmallCirShapes.push_back(sf::CircleShape(12));
        arrSmallCirShapes.push_back(sf::CircleShape(12));
        arrBigCirShapes.push_back(sf::CircleShape(25));
        arrBigCirShapes.push_back(sf::CircleShape(25));
        arrBigCirShapes.push_back(sf::CircleShape(25));
        
        arrSmallCirShapes[0].setFillColor(sf::Color::Black);
        arrSmallCirShapes[1].setFillColor(sf::Color::Black);
        arrSmallCirShapes[2].setFillColor(sf::Color::Black);
        arrBigCirShapes[0].setFillColor(sf::Color::Black);
        arrBigCirShapes[1].setFillColor(sf::Color::Black);
        arrBigCirShapes[2].setFillColor(sf::Color::Black);
        
        arrSmallCirShapes[0].setPosition(rect.getPosition().x + 50, rect.getPosition().y +  20);
        arrSmallCirShapes[1].setPosition(rect.getPosition().x + 15, rect.getPosition().y +  86);
        arrSmallCirShapes[2].setPosition(rect.getPosition().x + 50, rect.getPosition().y +  156);
        arrBigCirShapes[0].setPosition(rect.getPosition().x - 25, rect.getPosition().y +  20);
        arrBigCirShapes[1].setPosition(rect.getPosition().x + rect.getSize().x - 25, rect.getPosition().y +  74);
        arrBigCirShapes[2].setPosition(rect.getPosition().x - 25, rect.getPosition().y +  132);
 
         while (window.isOpen())
              {
 
                    sf::Event event;
                    while (window.pollEvent(event))
                    {
                        if(event.type == sf::Event::Closed)
                            window.close();
                            
                     
                    }
    
                   
                    window.clear( );
                    window.draw(rect);
                    for(size_t i = 0; i < arrSmallCirShapes.size(); ++i)
                        window.draw(arrSmallCirShapes[i]);
                    for(size_t i = 0; i < arrBigCirShapes.size(); ++i)
                        window.draw(arrBigCirShapes[i]);
                    window.display();
              }
 
    return 0;
}
Миниатюры
Как нарисовать такую фигуру?  
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
21.06.2016, 09:59 12
Win API GDI:
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
#include <windows.h>
#include <conio.h>
int main()
{
    HWND hwnd;       
    char Title[1024];
    GetConsoleTitle(Title, 1024); // Узнаем имя окна
    hwnd=FindWindow(NULL, Title); // Узнаем hwnd окна
    HDC hdc=GetDC(hwnd);    // Получаем контекст для рисования
    system("color 0F"); // цвет фона черный, текста белый
    const int dist=50,w=100,h=200,R=25,r=10;
    
    Rectangle(hdc,dist,dist,w+dist,h+dist);   // Белый прямоугольник
    
    HBRUSH br=(HBRUSH)GetStockObject(BLACK_BRUSH);
    HBRUSH b0=(HBRUSH)SelectObject(hdc,br);   // выбрать цвет заливки черный
    
    Ellipse(hdc,dist-R,dist-R+h/4,dist+R,dist+R+h/4); // Большой левый верхний круг
    Ellipse(hdc,dist-R,dist-R+h*3/4,dist+R,dist+R+h*3/4);// Большой левый нижний круг
    Ellipse(hdc,dist-R+w,dist-R+h/2,dist+R+w,dist+R+h/2);// Большой правый круг
 
    Ellipse(hdc,dist+R-r,dist-r+h/2,dist+R+r,dist+r+h/2);// Маленький левый круг
    Ellipse(hdc,dist+R+(w-R)/2-r,dist+R-r,dist+R+(w-R)/2+r,dist+R+r);// Маленький правый верхний круг
    Ellipse(hdc,dist+R+(w-R)/2-r,dist+(h-R)-r,dist+R+(w-R)/2+r,dist+(h-R)+r);// Маленький правый нижний круг
    SelectObject(hdc,b0);   
    ReleaseDC(hwnd,hdc);    // Освобождаем контекст рисования
    _getch(); 
}
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
21.06.2016, 11:17 13
у меня одного при скорллинге изображения из сообщений egor2116 и prove забавно наплывают)?
0
Croessmah
21.06.2016, 11:23
  #14

Не по теме:

vxg, у меня, вроде, всё нормально :scratch:
На всякий случай: Chrome версии 50.0.2661.102 Ubuntu-MATE 14.04 (64-bit)

0
vxg
21.06.2016, 11:32
  #15

Не по теме:

Croessmah, у меня Chrome Версия 49.0.2623.112 m Windows XP SP 3 - при прокрутке страницы колесом мыши черный фон наплывает на серое тело детали а круглые отверстия растягиваются в овалы вплоть до объединения с фоном... красота) думаю это из за удачно подобранного цвета детали

0
0 / 0 / 1
Регистрация: 06.12.2015
Сообщений: 215
22.06.2016, 12:13  [ТС] 16
на title, ругается

Добавлено через 3 минуты
И как это закрасить?
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
#include <iostream> 
#include <Windows.h> 
#include <clocale>
using namespace std;
int polyline(int h, int w) {
    int x = 100, y = 70;
    POINT p;
    HWND hWnd = GetConsoleWindow();
    HDC hDC = GetDC(hWnd);
    SelectObject(hDC, GetStockObject(WHITE_PEN));
 
    MoveToEx(hDC, x + (w / 4), y +  7* (h / 7), &p);
    LineTo(hDC, x + 9 * (w / 4), y + 5* (h / 5));
    MoveToEx(hDC, x + 4* (w / 4), y + 4 * (h / 7), &p);
    LineTo(hDC, x + 6 * (w / 4), y + 4 * (h / 7));
    Arc(hDC, x - 2*   (w / 4), y +  (h / 5), x + 4 * (w / 4), y + 5 * (h / 5), x + 4 * (w / 4), y + 4 * (h / 7), x +     (w / 4), y + 7 * (h / 7));
    Arc(hDC, x + 12 * (w /4 ), y +  (h / 5), x + 6 * (w / 4), y + 5 * (h / 5), x + 9 * (w / 4), y + 5 * (h / 7), x + 6 * (w / 4), y + 4 * (h / 7));
    Arc(hDC, x -      (w / 4), y + 2* (h / 6), x + 3 * (w / 4), y + 5.3 * (h / 6), 0, 0, 0, 0);
    Arc(hDC, x + 11 * (w / 4), y + 2*  (h / 6), x + 7 *  (w / 4), y + 5.3 * (h / 6), 0, 0, 0, 0);
    return 0;
}
int main()
{
    setlocale(LC_CTYPE, "rus");
    int w, h;
    POINT op;
    HWND hWnd = GetConsoleWindow(); //Получаем дескриптор окна консоли 
    HDC hDC = GetDC(hWnd); //Получаем контекст устройства по полученному дескриптору 
    SelectObject(hDC, GetStockObject(WHITE_PEN)); //Выбираем перо WHITE_PEN в контекст 
 
    cout << "Введите число кратное 7 - ";
    cin >> h;
    system("cls");
    cout << "Введите число кратное 4 - ";
    cin >> w;
    system("cls");
 
    polyline(h, w);
    std::cin.get();
 
    ReleaseDC(hWnd, hDC); //"Освобождаем" контекст 
    std::cin.get();
    return 0;
}
0
22.06.2016, 12:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2016, 12:13
Помогаю со студенческими работами здесь

Нарисовать фигуру
Нужно сделать так чтобы при запуске программы появлялась вот такая фигура: ********* *________*...

Нарисовать фигуру (язык С)
прямоугольник и сделать какую-то заливку цветную. заранее спс___)))

Opengl нарисовать фигуру
На белом фоне трапеция а в ней зелёный треугольник. Нужен код

Нарисовать фигуру (язык C)
язык C , заранее спасибо:)


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru