当前位置: 首页 > news >正文

10个C++绘图案例

文章目录

  • 热门文章
  • 10个C++绘图案例
      • 1. 绘制正方形
      • 2. 绘制圆形
      • 3. 绘制椭圆
      • 4. 绘制直线
      • 5. 绘制多边形
      • 6. 绘制弧线
      • 7. 绘制填充矩形
      • 8. 绘制同心圆
      • 9. 绘制彩色线段
      • 10. 绘制点阵图

热门文章

序号直达链接
1C/C++爱心代码
2C/C++跳动的爱心
3C/C++李峋同款跳动的爱心代码
4C/C++满屏飘字表白代码
5C/C++大雪纷飞代码
6C/C++烟花代码
7C/C++黑客帝国同款字母雨
8C/C++樱花树代码
9C/C++奥特曼代码
10C/C++圣诞树代码
11C/C++俄罗斯方块
12C/C++贪吃蛇
13C/C++孤单又灿烂的神-鬼怪
14C/C++闪烁的爱心

10个C++绘图案例

以下是10个C语言绘图案例代码,每个案例都附有详细分析。C语言并不直接支持图形绘制,通常需要使用图形库(如graphics.hSDL等)。这里将使用graphics.h库作为示例。

1. 绘制正方形

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);rectangle(100, 100, 200, 200);getch();closegraph();return 0;
}

分析:该代码使用graphics.h库在屏幕上绘制了一个正方形。initgraph初始化图形模式,rectangle函数绘制一个指定左上角和右下角坐标的矩形。通过将坐标参数设置为(100,100)到(200,200),形成了一个100x100的正方形。getch()用于等待用户输入,以便观察图形。

2. 绘制圆形

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);circle(300, 200, 100);getch();closegraph();return 0;
}

分析:该代码使用circle函数绘制了一个圆。circle(300, 200, 100)表示以(300, 200)为圆心,半径为100的圆。图形库的circle函数可以快速生成指定位置的圆形图案,广泛用于基本图形绘制。graphics.h提供了方便的接口来进行简单的图形操作。

3. 绘制椭圆

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);ellipse(300, 200, 0, 360, 150, 100);getch();closegraph();return 0;
}

分析:该代码使用了ellipse函数绘制椭圆。ellipse(300, 200, 0, 360, 150, 100)表示以(300, 200)为中心,长轴为150,短轴为100,绘制完整的椭圆。0, 360定义了椭圆的开始角度和结束角度(即一个完整的椭圆)。该函数能用于绘制多种形状的椭圆。

4. 绘制直线

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);line(100, 100, 300, 300);getch();closegraph();return 0;
}

分析:此代码通过line函数绘制一条从(100,100)到(300,300)的直线。直线是最基础的图形元素之一,graphics.hline函数让用户可以轻松设置线段的起点和终点坐标。该函数常用于创建复杂图形的骨架或边框。

5. 绘制多边形

#include <graphics.h>
int main() {int gd = DETECT, gm;int points[] = {100, 100, 150, 200, 200, 100, 100, 100};initgraph(&gd, &gm, NULL);drawpoly(4, points);getch();closegraph();return 0;
}

分析:该代码通过drawpoly函数绘制了一个三角形。points数组定义了三角形的顶点坐标。drawpoly(4, points)表示绘制一个由4个点(3个顶点+1个闭合点)组成的多边形。graphics.hdrawpoly函数非常适合绘制多边形或复杂的几何形状。

6. 绘制弧线

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);arc(200, 200, 0, 180, 100);getch();closegraph();return 0;
}

分析:此代码使用了arc函数来绘制弧线。arc(200, 200, 0, 180, 100)表示从角度0到180绘制一个半径为100的弧线,圆心位于(200, 200)。该函数可用于创建圆的一部分或其他复杂的曲线形状,适用于需要分段绘制的图形。

7. 绘制填充矩形

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);setfillstyle(SOLID_FILL, RED);bar(100, 100, 300, 200);getch();closegraph();return 0;
}

分析:该代码绘制了一个填充矩形。setfillstyle(SOLID_FILL, RED)用于设置填充样式为实心红色,然后使用bar(100, 100, 300, 200)函数绘制矩形。bar函数与rectangle类似,但其会自动填充矩形的内部。graphics.h中的填充功能可以增强图形的表现力。

8. 绘制同心圆

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);for(int i = 0; i < 5; i++) {circle(200, 200, 50 + i * 20);}getch();closegraph();return 0;
}

分析:该代码使用了一个循环来绘制五个同心圆。通过循环,每次增加圆的半径值(50 + i * 20),从而生成多个共用同一个圆心的圆。这个方法展示了如何通过循环和参数控制来创建有规律的几何图案,如同心圆或波浪形图案。

9. 绘制彩色线段

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);for (int i = 0; i < 5; i++) {setcolor(i + 1);line(100, 100 + i * 20, 300, 100 + i * 20);}getch();closegraph();return 0;
}

分析:此代码绘制了五条彩色线段。setcolor(i + 1)设置了线条的颜色,每次循环颜色都会变化。line函数则负责绘制线段,线段的起始和结束坐标的y值通过i * 20递增,从而生成五条平行线。setcolor可以增强图形的视觉效果,适合彩色绘图需求。

10. 绘制点阵图

#include <graphics.h>
int main() {int gd = DETECT, gm;initgraph(&gd, &gm, NULL);for (int x = 0; x < 640; x += 20) {for (int y = 0; y < 480; y += 20) {putpixel(x, y, WHITE);}}getch();closegraph();return 0;
}

分析:该代码使用putpixel函数生成了一个点阵图。putpixel(x, y, WHITE)在指定的坐标(x, y)处绘制一个白色像素点。通过双重循环控制点的分布,每隔20像素生成一个点,形成规则的点阵。putpixel是非常基础的绘图函数,适合需要精确像素控制的场景。

这些示例代码展示了C语言与graphics.h库结合的各种绘图功能,包括基本的几何图形、颜色填充、多边形绘制以及点阵图生成。这些功能为C语言提供了基本的图形能力。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【大模型专栏—入门篇】CUDA入门与AutoDL“炼丹”
  • 34465A-61/2 数字万用表(六位半)
  • 爬虫基础知识+豆瓣电影实战
  • 《数据结构(C语言版)第二版》第八章-排序(8.5-归并排序、8.6基数排序)
  • 苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布
  • Docker容器管理的10个基础命令
  • 区块链媒体:区块链媒体套餐倾心推广解析!
  • kafka单条消息过大发送失败
  • 828华为云征文 | Flexus X实例CPU、内存及磁盘性能实测与分析
  • 软件设计师の第一章:计算机组成与结构
  • 蓝牙核心规范解析
  • DeepACO:用于组合优化的神经增强蚂蚁系统
  • SAP与赛美特MES系统集成案例
  • python测试开发---vue的常见指令
  • 66、Python之函数高级:一个装饰器不够用,可以多装饰器buffer叠加
  • Java IO学习笔记一
  • mac修复ab及siege安装
  • vuex 学习笔记 01
  • 初探 Vue 生命周期和钩子函数
  • 设计模式走一遍---观察者模式
  • 使用 @font-face
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​水经微图Web1.5.0版即将上线
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ‌JavaScript 数据类型转换
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (3)llvm ir转换过程
  • (4)logging(日志模块)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (三)uboot源码分析
  • (学习日记)2024.01.19
  • (转)jQuery 基础
  • (转)memcache、redis缓存
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net多线程Threading相关详解
  • .NET项目中存在多个web.config文件时的加载顺序
  • [APIO2015]巴厘岛的雕塑
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [CC-FNCS]Chef and Churu
  • [codevs1288] 埃及分数
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [FreeRTOS 基础知识] 栈
  • [GKCTF 2021]excel 骚操作1
  • [java基础揉碎]文件IO流
  • [jquery]this触发自身click事件,当前控件向上滑出