绘制心形函数步骤
前言
很多学习C/C++语言的学生只知道写字符和数字的输入输出,不知道如何绘图,今天给大家带来的是用C语言绘制心形图形。
一、EasyX
1.
EasyX 是什么?
EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。
2.EasyX 绘图库目前支持 VC6.0 ~ VC2019 所有版本。可以到 EasyX 官网 https://easyx.cn 直接下载:
二、使用步骤
1.引用函数库
代码如下(示例):
#include <graphics.h> #include <conio.h>
graphics 图形库函数
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
这里我们需要使用
绘图的
arc
这个函数用于画椭圆弧。
fillpie
这个函数用于画有边框的填充扇形。
initgraph
这个函数用于初始化绘图窗口。
setlinestyle
这个函数用于设置当前设备画线样式。
_getch
用于忽略返回值。
closegraph
这个函数用于关闭绘图窗口。
2.写一个函数
图形函数
void xx(int x, int y, int r) //x是图形的横坐标,y是纵坐标,r是半径
{
double pi = 3.14159; //由于需要画椭圆需定义一个Π值
arc(-2 * r + x, r + y, x, -r + y, 0, pi); //前两个参数求椭圆的位置,有一个参数求椭圆的弧度
arc(2 * r + x, r + y, x, -r + y, 0, pi);
arc(-2 * r+x, y+3 * r, 4 * r+x, -3 * r+y, pi, pi * 250 / 180);
arc(-4 * r+x, 3 * r+y, 2 * r+x, -3 * r+y, pi * 290 / 180, pi * 2);
}
试一试效果
绘图先初始化窗口
initgraph(600,400);
再设定线条的属性
setlinestyle(PS_SOLID, 1);
同时为了看到图像,使用忽略返回值函数_getch();
然后关闭窗口 closegraph();
#include <graphics.h>
#include <conio.h>
void xx(int x, int y, int r)
{
double pi = 3.14159;
arc(-2 * r + x, r + y, x, -r + y, 0, pi);
arc(2 * r + x, r + y, x, -r + y, 0, pi);
arc(-2 * r+x, y+3 * r, 4 * r+x, -3 * r+y, pi, pi * 250 / 180);
arc(-4 * r+x, 3 * r+y, 2 * r+x, -3 * r+y, pi * 290 / 180, pi * 2);
}
int main()
{
initgraph(600,400);
setlinestyle(PS_SOLID, 1);
xx(100,200,50);
_getch();
closegraph();
return 0;
}
同样我们可以得出图像函数
由于是实心的所以使用扇形函数fillpie
void tx(int x, int y, int r)
{
double pi = 3.14159;
fillpie(-2 * r + x, r + y, x, -r + y, 0, pi);
fillpie(2 * r + x, r + y, x, -r + y, 0, pi);
fillpie(-2 * r + x, y + 3 * r, 4 * r + x, -3 * r + y, pi, pi * 250 / 180);
fillpie(-4 * r + x, 3 * r + y, 2 * r + x, -3 * r + y, pi * 290 / 180, pi * 2);
}
现在放到一起看效果
所以。我们可以得出函数是正确的
最终得到函数及其展示
#include <graphics.h>
#include <conio.h>
void xx(int x, int y, int r)
{
double pi = 3.14159;
arc(-2 * r + x, r + y, x, -r + y, 0, pi);
arc(2 * r + x, r + y, x, -r + y, 0, pi);
arc(-2 * r+x, y+3 * r, 4 * r+x, -3 * r+y, pi, pi * 250 / 180);
arc(-4 * r+x, 3 * r+y, 2 * r+x, -3 * r+y, pi * 290 / 180, pi * 2);
}
void tx(int x, int y, int r)
{
double pi = 3.14159;
fillpie(-2 * r + x, r + y, x, -r + y, 0, pi);
fillpie(2 * r + x, r + y, x, -r + y, 0, pi);
fillpie(-2 * r + x, y + 3 * r, 4 * r + x, -3 * r + y, pi, pi * 250 / 180);
fillpie(-4 * r + x, 3 * r + y, 2 * r + x, -3 * r + y, pi * 290 / 180, pi * 2);
}
int main()
{
initgraph(600,400);
setlinestyle(PS_SOLID, 1);
xx(100,200,50);
tx(400, 200, 50);
_getch();
closegraph();
return 0;
}