用C++画一个圆

注:我的开发环境是vs2013,所以需要手动配置EasyX图形库,还没配置图形库的可以参考我的另一片文章

一、配置好图形库(可以参考我那篇EasyX图形库配置的文章)


二、开始编码

#include"stdafx.h"
#include <graphics.h> // 就是需要引用这个图形库
#include <conio.h>
void main()
{
   initgraph(640, 480); // 初始化图形
   circle(250, 250, 100); // 画圆,圆心(250, 250),半径 100
   _getch(); // 按任意键继续也可以用system("pause");
   closegraph(); // 关闭图形界面
}

三、查看运行效果
这里写图片描述

### C++ 绘制代码示例(初学者友好版) 以下是一个使用标准 Windows GDI(Graphics Device Interface)绘制形的简单 C++ 示例。为了便于理解,每行代码都有详细的注释。 ```cpp #include <windows.h> // 包含Windows API头文件 // 定义窗口过程函数原型 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { const char CLASS_NAME[] = "CircleDrawingApp"; // 定义窗口类名称 WNDCLASS wc = {}; // 创建一个WNDCLASS结构体实例 wc.lpfnWndProc = WndProc; // 设置窗口过程函数地址 wc.hInstance = hInstance; // 当前应用程序实例句柄 wc.lpszClassName = CLASS_NAME; // 设置窗口类名 RegisterClass(&wc); // 注册窗口类 HWND hwnd = CreateWindowEx( // 创建窗口 0, // 扩展样式 CLASS_NAME, // 窗口类名 "C++ Circle Drawing Example", // 窗口标题 WS_OVERLAPPEDWINDOW, // 窗口风格 CW_USEDEFAULT, CW_USEDEFAULT, // 窗口位置由系统决定 400, 300, // 窗口宽度和高度 NULL, // 父窗口句柄 NULL, // 菜单句柄 hInstance, // 应用程序实例句柄 NULL // 额外数据 ); ShowWindow(hwnd, nShowCmd); // 显示窗口 UpdateWindow(hwnd); // 更新窗口 MSG msg = {}; // 消息结构体初始化为空 while (GetMessage(&msg, NULL, 0, 0)) { // 消息循环 TranslateMessage(&msg); // 将虚拟键消息转换为字符消息 DispatchMessage(&msg); // 分发消息到相应的窗口过程函数 } return 0; } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_PAINT: { // 处理WM_PAINT消息 PAINTSTRUCT ps; // 声明PAINTSTRUCT结构体 HDC hdc = BeginPaint(hwnd, &ps); // 获取设备上下文句柄并开始绘图 // 计算心坐标和半径 RECT rect; GetClientRect(hwnd, &rect); // 获取客户区矩形范围 int centerX = (rect.right + rect.left) / 2; // 心横坐标 int centerY = (rect.bottom + rect.top) / 2; // 心纵坐标 int radius = std::min(centerX, centerY) * 0.75; // 半径设为客户区较小边长的75% // 使用Ellipse函数绘制 Ellipse(hdc, centerX - radius, centerY - radius, centerX + radius, centerY + radius); EndPaint(hwnd, &ps); // 结束绘图 break; } case WM_DESTROY: { // 处理WM_DESTROY消息 PostQuitMessage(0); // 向线程发送退出消息 break; } default: // 默认情况调用DefWindowProc处理未定义的消息 return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } ``` --- #### 关键点说明 - **`#include <windows.h>`**: 包含了 Windows 平台下的基本图形接口所需的头文件[^1]。 - **`WNDCLASS` 和 `RegisterClass`**: 定义了一个新的窗口类别,并将其注册到操作系统中[^1]。 - **`CreateWindow`**: 创建一个新的窗口对象,并指定其属性,例如大小、位置以及父级关系等[^1]。 - **`BeginPaint`/`EndPaint`**: 提供了一种机制,在接收到 `WM_PAINT` 消息时启动和结束绘操作[^1]。 - **`Ellipse` 函数**: 接受四个整数参数分别表示左上角和右下角两个点的位置,从而出椭或者正[^1]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值