C++图形简介
C++中的图形被定义为创建一个图形模型,如创建不同的形状并为其添加颜色。它可以通过向GCC编译器导入graphics.h库在C++控制台中完成。我们也可以绘制圆形、直线、日蚀和其他几何形状。面向对象编程的应用是这里要使用的主要技术。C++没有任何内置的函数来执行绘图,因为他们有低级别的程序可以使用;相反,我们可以使用API来做图形。
语法
正式的语法是这样的。
# include<graphics.h>
{
Initgraph();
}
少数图形属性是:
setcolor(color), setbkcolor(color), setlinestyle(style, pattern, thickness)。
图形在C++中是如何工作的?
图形是一个二维的概念;为了实现这个概念,我们需要在C++编程中实现和一些函数。所以,窗口或画布是显示输出的主要功能。由于我们需要一个好的框架来开发一个好的绘图功能,在这篇文章中,我使用了DevC++ IDE,为此我们需要一个特定的软件包来处理图形工作,要下载这个,我们可以参考WinBGIm来安装图形库。
为了使用DevC++,我们需要下载graphics.h和libbgi. a文件。下一步是进入项目,选择项目选项,然后选择参数标签,在链接器标签中粘贴以下内容:lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32。
许多GUI编程被停止在C++中,因为他们没有默认的图形库。
为了与图形打交道,在进入代码之前,我们需要一些必要的东西:
1.坐标:这指定了点在窗口中的放置方式;筛选点的初始原点被假定为(0,0)。这个坐标系统描述了如何以及在何处执行指定的绘制选项。图形屏幕有640 X 480像素。
2.颜色的基础知识:默认的颜色元素是红色、绿色和蓝色;所有这些颜色的输出都局限在屏幕的像素上。要设置一个颜色,我们可以使用setcolor(数字);数字指定了颜色代码;例如,数字14代表黄色。阴影和着色为图像增加了额外的效果。
少数函数使代码更有吸引力,这在图形模式下效果很好。:
- BLINK(闪烁):它有助于在屏幕窗口上闪动一个字符。
- GOTOXY:它有助于将光标移动到屏幕上的任何位置。
- 延迟:它可以暂停几个部分。例如,要移动下一辆车。它等待一段时间。
- 位置函数如getmaxx()、getx()和gety()。
好了,让我们来看看图形代码中的工作步骤:
- 第一步是包括一个头文件GRAPHICS.H,其中有一个图形函数,graphic.lib有内置的库函数。
- 接下来是包括一个函数initgraph(),它启动了图形模式,并带有两个变量gd,一个图形驱动和gm,图形模式。其次,我们可以使用一个目录路径。
- Closegraph () - 这个函数将屏幕转回文本模式。为了结束程序,使用这个函数;它刷新了之前用于图形的内存。
- clear() - 它将光标位置返回到(0,0)。
- circle() - 创建一个具有给定半径的圆。
- line() - 创建一个有起点和终点的线。
例如,要画一条简单的线或一个圆,需要添加以下参数。
- lineto(x,y): 它从当前位置移动到用户定义的位置。
- circle(x, y, radius):为了画一个完整的圆,我们需要一个中心半径。
- 矩形(x1, y1, x2, y2):其中x1, y1是左上角,右下角是x2, y2。
C++图形的例子
这里我给出了一个关于如何在devC++的图形模式和开发过程中工作的示例程序。
例子#1
使用图形在C++中画一个三角形
代码
#include <graphics.h>
#include <iostream>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
line(140, 140, 350, 100);
line(140, 140, 200, 200);
line(350, 140, 200, 200);
getch();
closegraph();
}
解释
上面的简单代码在屏幕上画了一条x1, y1, x2, y2点的线。Gd, gm是一个函数initgraph的图形模式。上述代码生成的图形窗口如图所示。
输出
例子 #2
用矩形图形和文字创建一个主页
代码
#include<iostream.h>
#include<conio.h>
#include<graphic.h>
#include<math.h>
void main()
{clrscr();
int g=0,a;
initgraph(&g,&d,"");
setbkcolor(14);
setcolor(6);
settextstyle(2,0,4);
outtextxy(180,130,"G");
setcolor(5);
settextstyle(2,0,4);
outtextxy(120,120,"O");
setcolor(6);
settextstyle(2,0,4);
outtextxy(300,120,"O");
setcolor(5);
settextstyle(2,0,4);
outtextxy(250,130,"G");
setcolor(2);
settextstyle(2,0,4);
outtextxy(360,160,"L");
setcolor(3);
settextstyle(2,0,4);
outtextxy(310,130,"E");
setcolor(9);
settextstyle(2,0,4);
setcolor(8);
settextstyle(2,0,4);
outtextxy(110,250,"surf");
settextstyle(2,0,4);
outtextxy(350,320,"Go AHEAD");
setcolor(6);
rectangle(130,210,450,210);
rectangle(90,310,170,340);
rectangle(360,320,510,320);
getch();
}
解释
上面的代码绘制了一个矩形形状和不同颜色的文本。
输出
例子#3
代码
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
void flood(int,int,int,int);
void main()
{
int gd,gm=DETECT;
clrscr();
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
rectangle(60,60,90,90);
flood (50,50,8,0);
getch();
}
void flood(int a,int b, int fcol, int col)
{
if(getpixel(a,b)==col)
{
delay(15);
putpixel(a,b,fcol);
flood(a+1,b,fcol,col);
flood (a-1,b,fcol,col);
flood (a,b+1,fcol,col);
flood (a,b-1,fcol,col);
}
}
解释
上面的代码淹没了一个带有文本颜色的形状。
输出
例子 #4
代码
#include <conio.h>
#include <graphics.h>
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void ellipsedr(int e1, int e2, int a1, int b1,
float alp, int color)
{
float tt = 3.14 / 180;
alp= 360 - alp;
setcolor(color);
int tetaa;
for (int j = 0; j < 360; j += 1) {
tetaa = j;
int x1 = a1 * cos(t1 * tetaa) * cos(t1 * al)
+ b1 * sin(t1 * tetaa) * sin(tt * alp);
int y1 = b1 * sin(t1 * tetaa) * cos(tt * alp)
- a * cos(tt * tetaa) * sin(tt * alp);
putpixel(e1 + x1, e2 - y1, color);
}
}
void view(int e1, int e2, int rr, int a1, int b1,
int alp, float pp, int color)
{
setcolor(color);
float tt = 3.14 / 180;
float ta, tb, d;
float angle = (pp * alp);
ta = cos(t * fmod(angle, 360));
tb = sin(t * fmod(angle, 360));
ta*= ta;
tb *= tb;
ta = ta / (a1 * a1);
tb = tb / (b1 * b1);
d = sqrt(ta + tb);
d = 1 / d;
int gox = e1 + (rr + d) * cos(tt * alp);
int goy = e2 - (rr + d) * sin(tt * alp);
int goang = angle + alp;
ellipsedr(gox, goy, a,
b, draw_ang, color);
}
void elipsecirc(int xc, int yc,
int rr, int a1, int b1)
{
float tetaa = 0;
double hei, pi1;
hei = (a1 * a1) + (b1 * b1);
hei /= 2;
pi1 = sqrt(hei);
pi1 /= rr;
pi1 = 1 / (pi1);
for (;; tetaa -= 1) {
view(e1, e2, rr, a1, b1,tetaa, pi1, WHITE);
circle(xcir, ycir, rr);
delay(25);
view(e1, e2, rr, a1, b1,tetaa, pi1, BLACK);
}
}
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
int mx = getmaxx();
int my = getmaxy();
elipsecirc(mx / 2, my / 2,
90, 30, 26);
closegraph();
return 0;
}
解释
上面的代码通过设置x和y坐标在圆上显示一个椭圆。
输出
结论
在这篇文章中,我们描述了图形在C++编程中是如何工作的。我们介绍了用于图形编程的简单和一般函数。我们还讨论了设计和例子的过程,以了解这个概念。