Linux-小菜 2021-06-28 16:43 采纳率: 0%
浏览 59

C语言问题 如何根据用户输入的数值(圆心,半径,边框颜色,填充颜色)画圆?

C语言问题 如何根据用户输入的数值(圆心,半径,边框颜色,填充颜色)画圆?
   

  • 写回答

1条回答 默认 最新

  • 从此不归路 2023-02-27 15:45
    关注

    你可以使用C语言中的图形库来画圆,比如Windows API或者OpenGL等。这里以Windows API为例,给出一个简单的代码示例

    
    ```c
    #include <windows.h>
    
    // 定义窗口句柄和设备上下文句柄
    HWND g_hWnd = NULL;
    HDC g_hDC = NULL;
    
    // 绘制圆形的函数
    void DrawCircle(int centerX, int centerY, int radius, COLORREF borderColor, COLORREF fillColor)
    {
        // 选中画笔
        HPEN hPen = CreatePen(PS_SOLID, 1, borderColor);
        SelectObject(g_hDC, hPen);
    
        // 选中画刷
        HBRUSH hBrush = CreateSolidBrush(fillColor);
        SelectObject(g_hDC, hBrush);
    
        // 绘制圆形
        Ellipse(g_hDC, centerX - radius, centerY - radius, centerX + radius, centerY + radius);
    
        // 释放画笔和画刷
        DeleteObject(hPen);
        DeleteObject(hBrush);
    }
    
    // 窗口过程函数
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)
        {
        case WM_PAINT:
        {
            // 绘制圆形
            DrawCircle(200, 200, 100, RGB(255, 0, 0), RGB(0, 255, 0));
    
            // 结束绘图
            EndPaint(hWnd, NULL);
            break;
        }
        case WM_DESTROY:
        {
            // 关闭设备上下文句柄
            ReleaseDC(hWnd, g_hDC);
    
            // 结束程序
            PostQuitMessage(0);
            break;
        }
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
    
        return 0;
    }
    
    // 程序入口函数
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
        // 创建窗口
        WNDCLASS wc = { 0 };
        wc.lpfnWndProc = WndProc;
        wc.hInstance = hInstance;
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.lpszClassName = "MyWindowClass";
        RegisterClass(&wc);
    
        g_hWnd = CreateWindow("MyWindowClass", "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
    
        // 显示窗口
        ShowWindow(g_hWnd, nCmdShow);
        UpdateWindow(g_hWnd);
    
        // 创建设备上下文句柄
        g_hDC = GetDC(g_hWnd);
    
        // 消息循环
        MSG msg;
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    
        return (int)msg.wParam;
    }
    
    
    

    ```

    评论

报告相同问题?

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?