vs 2022 c++画图

请问怎么拿c++用graphics.h(下载了该函数库)画出一个铁路的路徽啊

img


大概像就行了,不用特别复杂的画
一个有缺口的弧形加一个工字型

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    解决方案

    首先,需要明确graphics.h函数库是一个用于图形绘制的库,可以在窗口中进行绘图操作。这个库在VS 2022中可能无法直接使用,因为它是为旧版本的C++编译器设计的。如果希望在VS 2022中使用图形绘制功能,可以考虑使用其他的图形库,如SFML、OpenGL等。

    下面给出使用SFML库来实现一个简单的铁路图标的例子:

    1. 首先,需要安装SFML库。可以从官方网站(https://www.sfml-dev.org/)下载并安装对应的库文件。

    2. 创建一个新的C++项目,在项目设置中将SFML库包含到项目中。

    3. 在代码中引入必要的头文件,并创建一个窗口用于绘图操作:

    #include <SFML/Graphics.hpp>
    
    int main()
    {
        sf::RenderWindow window(sf::VideoMode(800, 600), "Railway Icon");
    
        while (window.isOpen())
        {
            sf::Event event;
            while (window.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)
                    window.close();
            }
    
            window.clear(sf::Color::White);
    
            // 在这里进行绘图操作
    
            window.display();
        }
    
        return 0;
    }
    
    1. 实现铁路图标的绘制功能。可以使用SFML提供的图形绘制类来实现。根据问题描述,铁路图标可以分为一个有缺口的弧形和一个工字型。可以通过绘制多个线段和圆弧来实现这个图标:
    #include <SFML/Graphics.hpp>
    
    int main()
    {
        sf::RenderWindow window(sf::VideoMode(800, 600), "Railway Icon");
    
        while (window.isOpen())
        {
            sf::Event event;
            while (window.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)
                    window.close();
            }
    
            window.clear(sf::Color::White);
    
            // 绘制弧形
            sf::CircleShape arc(100, 180);
            arc.setPosition(200, 200);
            arc.setFillColor(sf::Color::Transparent);
            arc.setOutlineThickness(2);
            arc.setOutlineColor(sf::Color::Black);
            window.draw(arc);
    
            // 绘制工字型
            sf::RectangleShape horizontalLine(sf::Vector2f(200, 2));
            horizontalLine.setPosition(200, 300);
            horizontalLine.setFillColor(sf::Color::Black);
            window.draw(horizontalLine);
    
            sf::RectangleShape verticalLine(sf::Vector2f(2, 100));
            verticalLine.setPosition(300, 250);
            verticalLine.setFillColor(sf::Color::Black);
            window.draw(verticalLine);
    
            window.display();
        }
    
        return 0;
    }
    

    这个例子中使用了SFML的CircleShape和RectangleShape类来创建并绘制弧形和线段,然后通过RenderWindow的draw函数将它们绘制在窗口上。

    注意:以上代码是使用SFML库来实现的,如果希望使用graphics.h库来实现图形绘制,可以参考参考资料中的段落1给出的代码,并根据需求进行修改。不过需要注意的是,由于graphics.h库可能无法直接在VS 2022中使用,所以可能需要额外的配置和修改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
#include <graphics.h>
#include <conio.h>

int main() {
    initgraph(640, 480); // 初始化图形界面
    setbkcolor(WHITE); // 设置背景色为白色
    cleardevice(); // 清空屏幕

    // 绘制缺口的弧形
    int x1 = 200, y1 = 200; // 起点坐标
    int r1 = 50; // 半径1
    int r2 = 30; // 半径2
    int angle1 = 0, angle2 = 90; // 起始角度和终止角度
    int n = 100; // 圆周上的点数
    int i;
    for (i = 0; i < n; i++) {
        int x = x1 + r1 * cos(angle1) + r2 * sin(angle1);
        int y = y1 + r1 * sin(angle1) + r2 * cos(angle1);
        setfillcolor(RED); // 设置填充颜色为红色
        fillcircle(x, y, r1); // 在圆周上绘制红色小圆点
        angle1 += PI/n; // 每次旋转的角度增加PI/n
    }