大家好,今天小编来为大家解答以下的问题,关于rectangle函数,rectangle函数怎么用这个很多人还不知道,现在让我们一起来看看吧!
在数学的世界里,矩形函数是一个既简单又复杂的概念。简单之处在于,它只是描述了一个矩形在二维平面上的变化;复杂之处在于,它蕴含了丰富的数学知识和应用。本文将带领大家深入解析矩形函数,让你对这一概念有更全面、更深入的理解。
一、矩形函数的定义
我们来明确一下矩形函数的定义。矩形函数,又称为“矩形变换”或“矩形映射”,是指将一个矩形映射到另一个矩形的一种变换。在数学上,这种变换可以用以下公式表示:
“”[ f(x, y) = (a(x – x_0), b(y – y_0)) “”]
其中,””( (x, y) “”) 是原始矩形的坐标,””( (a, b) “”) 是变换矩阵,””( (x_0, y_0) “”) 是变换后的矩形中心坐标。
二、矩形函数的性质
1. 线性变换:矩形函数是一种线性变换,这意味着它满足线性变换的基本性质,如加法、数乘等。
2. 保角性:矩形函数保持角度不变,即变换后的图形与原始图形具有相同的形状。
3. 保面积性:矩形函数保持面积不变,即变换后的图形与原始图形具有相同的面积。
4. 保距离性:矩形函数保持距离不变,即变换后的图形与原始图形之间的距离保持不变。
三、矩形函数的应用
矩形函数在数学、物理、计算机图形学等领域有着广泛的应用。以下列举几个典型应用:
1. 几何变换:矩形函数可以用于几何变换,如缩放、旋转、平移等。
2. 图像处理:在计算机图形学中,矩形函数可以用于图像处理,如图像缩放、裁剪等。
3. 物理模拟:在物理学中,矩形函数可以用于模拟物体的运动,如物体的平移、旋转等。
4. 数学建模:矩形函数可以用于数学建模,如解决几何问题、优化问题等。
四、矩形函数的求解方法
1. 直接法:根据矩形函数的定义,直接计算变换后的坐标。
2. 迭代法:通过迭代计算,逐步逼近变换后的坐标。
3. 数值法:利用计算机程序,求解矩形函数的数值解。
五、矩形函数的优缺点
1. 优点:
(1)简单易用:矩形函数的定义简单,易于理解和应用。
(2)应用广泛:矩形函数在多个领域都有应用,如几何变换、图像处理、物理模拟等。
(3)保角、保面积、保距离:矩形函数具有保角、保面积、保距离等性质,有利于保持图形的形状和大小。
2. 缺点:
(1)局限性:矩形函数只适用于矩形变换,对于非矩形变换,需要采用其他方法。
(2)计算复杂度:对于复杂的矩形函数,计算过程可能较为繁琐。
六、矩形函数的发展趋势
随着计算机技术的不断发展,矩形函数在以下几个方面有望取得新的进展:
1. 算法优化:通过优化算法,提高矩形函数的计算效率。
2. 应用拓展:将矩形函数应用于更多领域,如生物信息学、金融数学等。
3. 理论深化:深入研究矩形函数的性质,揭示其内在规律。
总结
矩形函数作为一种简单的数学概念,在多个领域都有着广泛的应用。通过对矩形函数的深入解析,我们不仅可以更好地理解这一概念,还可以将其应用于实际问题中。相信在未来的发展中,矩形函数将发挥更大的作用。
以下是一个矩形函数的实例表格:
| 原始矩形坐标 | 变换矩阵 | 变换后坐标 |
|---|---|---|
| (1,2) | (2,0) | (2,2) |
| (3,4) | (0,1) | (3,4) |
| (5,6) | (1,2) | (6,8) |
在这个例子中,原始矩形坐标为 (1, 2),变换矩阵为 (2, 0) 和 (0, 1),变换后的坐标为 (2, 2) 和 (3, 4)。
rectangle()函数
rectangle()函数通常用于在图形界面或绘图库中绘制矩形。
rectangle()函数的具体实现和使用方式可能因编程语言和库的不同而有所差异。在大多数情况下,该函数接受一系列参数,用于指定要绘制的矩形的位置、大小和颜色。
在Python的Matplotlib库中,rectangle()函数是一个用于在坐标轴上绘制矩形的函数。它可以接受x、y、width和height等参数,分别表示矩形左下角的坐标和矩形的宽度、高度。此外,还可以指定矩形的边缘颜色、填充颜色等属性。
例如,以下代码使用Matplotlib的rectangle()函数在坐标轴上绘制一个红色的矩形:
python
import matplotlib.pyplot as plt
fig, ax= plt.subplots()
#绘制矩形
ax.add_patch(plt.Rectangle((0.1, 0.2), 0.3, 0.4, fill=False, edgecolor='red', linewidth=2))
plt.show()
在上面的代码中,我们创建了一个坐标轴对象,并使用add_patch()方法将矩形添加到坐标轴上。Rectangle()函数用于创建一个矩形对象,其中指定了矩形的左下角坐标(0.1, 0.2)、宽度0.3、高度0.4,以及矩形的边缘颜色为红色、线宽为2。最后,通过调用plt.show()显示绘制的图形。
除了Matplotlib之外,还有许多其他的图形库和编程语言提供了rectangle()函数或类似的函数来绘制矩形。这些函数的参数和使用方式可能有所不同,但基本的原理和功能都是相似的。通过使用rectangle()函数,我们可以方便地在图形界面或绘图库中绘制矩形,并对其进行自定义和样式设置。
rectangle命令特点和用法
Rectangle指定坐标空间中的一个区域,通过坐标空间中 Rectangle对象左上方的点(x,y)、宽度和高度可以定义这个区域。
其构造函数Rectangle(int x, int y, int width, int height)
height
Rectangle的高度。
width
Rectangle的宽度。
x
Rectangle左上角的 X坐标。
y
Rectangle左上角的 Y坐标。
Rectangle对象的 width和 height是 public字段。创建 Rectangle的构造方法,以及可以修改该对象的方法,都允许将 width和 height设置为负值。
对于 width或 height正好为 0的 Rectangle,它在相应轴上存在维数为 0的位置,但在这种情况下,也可将其视为空的 Rectangle。对于这种 Rectangle,isEmpty()方法将返回 ture。如果两个维数中任一维数为 0,则测试空 Rectangle是否包含某个点或是否与某个矩形相交的方法将始终返回 false。用点或矩形合并这种 Rectangle的方法将在结果中包含 Rectangle在该轴上的位置,正如调用 add(Point)方法一样。
对于 width或 height为负值的 Rectangle,它在相应轴上并不存在维数为负的位置或维数。这种 Rectangle将被视为不存在相应的轴上。对于包含计算,这种 Rectangle也为空,测试它是否包含某个点或是否与某个矩形相交的方法将始终返回 false。用点或矩形合并这种 Rectangle的方法将在生成结果时完全忽略 Rectangle。如果合并了两个 Rectangle对象,且每个对象都具有一个负维数,则结果中至少有一个负维数。
对于仅影响 Rectangle位置的方法,无论 Rectangle是否沿任一轴具有负维数或 0维数,都将在其位置上进行操作。
注意,用默认不带参数的构造方法构造的 Rectangle将具有 0x0维数,因此为空。Rectangle仍然具有(0,0)的位置,且将该位置用于合并和添加操作。因此,尝试累积点集合范围的代码最初应使用具体的负 width和负 height来构造 Rectangle,或者应使用该集合中的第一个点构造 Rectangle。
c语言 图形函数
图形函数 1.图形模式的初始化
不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同
模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将
显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文
本模式(80列, 25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形
模式,可用下列图形初始化函数:
void far initgraph(int far*gdriver, int far*gmode, char*path);
其中gdriver和gmode分别表示图形驱动器和模式, path是指图形驱动程序所
在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。
图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。根据不同的图形
适配器有不同的图形驱动程序。例如对于EGA、 VGA图形适配器就调用驱动程序
EGAVGA.BGI。例4.使用图形初始化函数设置VGA高分辨率图形模式
#include<graphics.h>
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,”c:\\tc”);
bar3d(100, 100, 300, 250, 50, 1);/*画一长方体*/
getch();
closegraph();
return 0;
}
有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序
用于不同图形驱动器, Turbo C提供了一个自动检测显示器硬件的函数,其调用
格式为:
void far detectgraph(int*gdriver,*gmode);
其中gdriver和gmode的意义与上面相同。
例5.自动进行硬件测试后进行图形初始化
#include<graphics.h>
int main()
{
int gdriver, gmode;
detectgraph(&gdriver,&gmode);/*自动测试硬件*/
printf(“the graphics driver is%d, mode is%d\n”, gdriver,
gmode);/*输出测试结果*/
getch();
initgraph(&gdriver,&gmode,”c:\\tc”);
/*根据测试结果初始化图形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化
设置,但Turbo C提供了一种更简单的方法,即用gdriver= DETECT语句后再跟
initgraph()函数就行了。采用这种方法后,上例可改为:
例6.
#include<graphics.h>
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver,&gmode,”c:\\tc”);
bar3d(50, 50, 150, 30, 1);
getch();
closegraph();
return 0;
}
另外, Turbo C提供了退出图形状态的函数closegraph(),其调用格式为:
void far closegraph(void);
调用该函数后可退出图形状态而进入文本方式(Turbo C默认方式),并释放
用于保存图形驱动程序和字体的系统内存。
2.独立图形运行程序的建立
Turbo C对于用initgraph()函数直接进行的图形初始化程序,在编译和链接
时并没有将相应的驱动程序(*.BGI)装入到执行程序,当程序进行到intitgraph()
语句时,再从该函数中第三个形式参数char*path中所规定的路径中去找相应的
驱动程序。若没有驱动程序,则在C:\TC中去找,如C:\TC中仍没有或TC不存在,
将会出现错误:
BGI Error: Graphics not initialized(use'initgraph')
因此,为了使用方便,应该建立一个不需要驱动程序就能独立运行的可执行
图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):
1.在C:\TC子目录下输入命令:BGIOBJ EGAVGA
此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
2.在C:\TC子目录下输入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
3.在程序中initgraph()函数调用之前加上一句:
registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。
经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。
假设已作了前两个步骤,若再向例6中加 registerbgidriver()函数则变成:
例7:
#include<stdio.h>
#include<graphics.h>
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver):/*建立独立图形运行程序*/
initgraph( gdriver, gmode,”c:\\tc”);
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
上例编译链接后产生的执行程序可独立运行。
如不初始化成EGA或CGA分辨率,而想初始化为CGA分辨率,则只需要将上述
步骤中有EGAVGA的地方用CGA代替即可。
3.屏幕颜色的设置和清屏函数
对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在
Turbo C中分别用下面两个函数。
设置背景色:void far setbkcolor( int color);
设置作图色:void far setcolor(int color);
其中color为图形方式下颜色的规定数值,对EGA, VGA显示器适配器,有关
颜色的符号常数及数值见下表所示。
表3有关屏幕颜色的符号常数表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数数值含义符号常数数值含义
———————————————————————————————————
BLACK0黑色 DARKGRAY 8深灰
BLUE 1兰色 LIGHTBLUE9深兰
GREEN2绿色 LIGHTGREEN 10淡绿
CYAN 3青色 LIGHTCYAN11淡青
RED4红色 LIGHTRED 12淡红
MAGENTA5洋红 LIGHTMAGENTA 13淡洋红
BROWN6棕色 YELLOW 14黄色
LIGHTGRAY7淡灰 WHITE15白色
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
对于CGA适配器,背景色可以为表3中16种颜色的一种,但前景色依赖于不同
的调色板。共有四种调色板,每种调色板上有四种颜色可供选择。不同调色板所
对应的原色见表4。
表4 CGA调色板与颜色值表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
调色板颜色值
—————————————————————————————
符号常数数值0 1 2 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
C0 0背景绿红黄
C1 1背景青洋红白
C2 2背景淡绿淡红黄
C3 3背景淡青淡洋红白
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
清除图形屏幕内容使用清屏函数,其调用格式如下:
voide far cleardevice(void);
另外, TURBO C也提供了几个获得现行颜色设置情况的函数。
int far getbkcolor(void);返回现行背景颜色值。
int far getcolor(void);返回现行作图颜色值。
int far getmaxcolor(void);返回最高可用的颜色值。
4.基本图形函数
基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数
作一全面的介绍。
一、画点
1.画点函数
void far putpixel(int x, int y, int color);
该函数表示有指定的象元画一个按color所确定颜色的点。对于颜色color的
值可从表3中获得而对x, y是指图形象元的坐标。
在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为
640×480,其中640为整个屏幕从左到右所有象元的个数, 480为整个屏幕从上到
下所有象元的个数。屏幕的左上角坐标为(0, 0),右下角坐标为(639, 479),水
平方向从左到右为x轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数
都是相对于图形屏幕坐标,即象元来说的。
关于点的另外一个函数是:
int far getpixel(int x, int y);
它获得当前点(x, y)的颜色值。
2.有关坐标位置的函数
int far getmaxx(void);
返回x轴的最大值。
int far getmaxy(void);
返回y轴的最大值。
int far getx(void);
返回游标在x轴的位置。
void far gety(void);
返回游标有y轴的位置。
void far moveto(int x, int y);
移动游标到(x, y)点,不是画点,在移动过程中亦画点。
void far moverel(int dx, int dy);
移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
二、画线
1.画线函数
TURBO C提供了一系列画线函数,下面分别叙述:
void far line(int x0, int y0, int x1, int y1);
画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y);
画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy);
画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius);
以(x, y)为圆心, radius为半径,画一个圆。
void far arc(int x, int y, int stangle, int endangle, int radius);
以(x, y)为圆心, radius为半径,从stangle开始到endangle结束(用度表示)
画一段圆弧线。在TURBO C中规定x轴正向为0度,逆时针方向旋转一周,依次为
90, 180, 270和360度(其它有关函数也按此规定,不再重述)。
void ellipse(int x, int y, int stangle, int endangle, int xradius,
int yradius);
以(x, y)为中心, xradius, yradius为x轴和y轴半径,从角stangle开始到
endangle结束画一段椭圆线,当stangle=0, endangle=360时,画出一个完整的
椭圆。
void far rectangle(int x1, int y1, int x2, inty2);
以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。
void far drawpoly(int numpoints, int far*polypoints);
画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。
polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,
y,并且x在前。值得注意的是当画一个封闭的多边形时, numpoints的值取实际
多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。
下面举一个用drawpoly()函数画箭头的例子。
例9:
#include<stdlib.h>
#include<graphics.h>
int main()
{
int gdriver, gmode, i;
int arw[16]={200, 102, 300, 102, 300, 107, 330,
100, 300, 93, 300, 98, 200, 98, 200, 102};
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,””);
setbkcolor(BLUE);
cleardevice();
setcolor(12);/*设置作图颜色*/
drawpoly(8, arw);/*画一箭头*/
getch();
closegraph();
return 0;
}
2.设定线型函数
在没有对线的特性进行设定之前, TURBO C用其默认值,即一点宽的实线,
但TURBO C也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有
两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函
数。
void far setlinestyle(intlinestyle, unsignedupattern, int
thickness);
该函数用来设置线的有关信息,其中linestyle是线形状的规定,见表5。
表5.有关线的形状(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数数值含义
—————————————————————————
SOLID_LINE 0实线
DOTTED_LINE1点线
CENTER_LINE2中心线
DASHED_LINE3点画线
USERBIT_LINE 4用户定义线
━━━━━━━━━━━━━━━━━━━━━━━━━
thickness是线的宽度,见表6。
表6.有关线宽(thickness)
━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数数值含义
—————————————————————————
NORM_WIDTH 1一点宽
THIC_WIDTH 3三点宽
━━━━━━━━━━━━━━━━━━━━━━━━━
对于upattern,只有linestyle选USERBIT_LINE时才有意义(选其它线型,
uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如
果那位为1,则该象元打开,否则该象元关闭。
void far getlinesettings(struct linesettingstype far*lineinfo);
该函数将有关线的信息存放到由lineinfo指向的结构中,表中
linesettingstype的结构如下:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}
例如下面两句程序可以读出当前线的特性
struct linesettingstype*info;
getlinesettings(info);
void far setwritemode(int mode);
该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息
覆盖了(这是TURBO C的默认方式)。如果mode=1,则表示画线时用现在特性的线
与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定
的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有
画线。
有关线型设定和画线函数的例子如下所示。
例10.
#include<stdlib.h>
#include<graphics.h>
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,””);
setbkcolor(BLUE);
cleardevice();
setcolor(GREEN);
circle(320, 240, 98);
setlinestyle(0, 0, 3);/*设置三点宽实线*/
setcolor(2);
rectangle(220, 140, 420, 340);
setcolor(WHITE);
setlinestyle(4, 0xaaaa, 1);/*设置一点宽用户定义线*/
line(220, 240, 420, 240);
line(320, 140, 320, 340);
getch();
closegraph();
return 0;
}
5.封闭图形的填充
填充就是用规定的颜色和图模填满一个封闭图形。
一、先画轮廓再填充
TURBO C提供了一些先画出基本图形轮廓,再按规定图模和颜色填充整个封
闭图形的函数。在没有改变填充方式时, TURBO C以默认方式填充。下面介绍这
些函数。
void far bar(int x1, int y1, int x2, int y2);
确定一个以(x1, y1)为左上角,(x2, y2)为右下角的矩形窗口,再按规定图
模和颜色填充。
说明:此函数不画出边框,所以填充色为边框。
void far bar3d(int x1, int y1, int x2, int y2, intdepth, int
topflag);
当topflag为非0时,画出一个三维的长方体。当topflag为0时,三维图形不
封顶,实际上很少这样使用。
说明: bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为
45度的方向。
void far pieslice(int x, int y, int stangle, intendangle, int
radius);
画一个以(x, y)为圆心, radius为半径, stangle为起始角度, endangle为
终止角度的扇形,再按规定方式填充。当stangle=0, endangle=360时变成一个
实心圆,并在圆内从圆点沿X轴正向画一条半径。
void far sector(int x, int y, intstanle, intendangle, int
xradius, int yradius);
画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,stangle
为起始角, endangle为终止角的椭圆扇形,再按规定方式填充。
二、设定填充方式
TURBO C有四个与填充方式有关的函数。下面分别介绍:
void far setfillstyle(int pattern, int color);
color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的
符号常数除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle()
函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。之所
以定义USER_FILL主要因为在获得有关填充信息时用到此项。
void far setfillpattern(char* upattern,int color);
设置用户定义的填充图模的颜色以供对封闭图形填充。
其中upattern是一个指向8个字节的指针。这8个字节定义了8×8点阵的图形。
每个字节的8位二进制数表示水平8点, 8个字节表示8行,然后以此为模型向个封
闭区域填充。
void far getfillpattern(char* upattern);
该函数将用户定义的填充图模存入upattern指针指向的内存区域。
void far getfillsetings(struct fillsettingstype far* fillinfo);
获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype
结构定义如下:
struct fillsettingstype{
int pattern;/*现行填充模式*/
int color;/*现行填充模式*/
};
三、任意封闭图形的填充
截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对
任意封闭图形进行填充。为此, TURBO C提供了一个可对任意封闭图形填充的函
数,其调用格式如下:
void far floodfill(int x, int y, int border);
其中: x, y为封闭图形内的任意一点。border为边界的颜色,也就是封闭图
形轮廓的颜色。调用了该函数后,将用规定的颜色和图模填满整个封闭图形。例12:
#include<stdlib.h>
#include<graphics.h>
main()
{
int gdriver, gmode;
strct fillsettingstype save;
gdriver=DETECT;
initgraph(&gdriver,&gmode,””);
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,3);
setfillstyle(1,14);/*设置填充方式*/
bar3d(100,200,400,350,200,1);/*画长方体并填充*/
floodfill(450,300,LIGHTRED);/*填充长方体另外两个面*/
floodfill(250,150, LIGHTRED);
rectanle(450,400,500,450);/*画一矩形*/
floodfill(470,420, LIGHTRED);/*填充矩形*/
getch();
closegraph();
}
6.有关图形窗口和图形屏幕操作函数
一、图形窗口操作
象文本方式下可以设定屏幕窗口一样,图形方式下也可以在屏幕上某一区域
设定窗口,只是设定的为图形窗口而已,其后的有关图形操作都将以这个窗口的
左上角(0,0)作为坐标原点,而且可为通过设置使窗口之外的区域为不可接触。
这样,所有的图形操作就被限定在窗口内进行。
void far setviewport(int xl,int yl,int x2, int y2,int clipflag);
设定一个以(xl,yl)象元点为左上角,(x2,y2)象元为右下角的图形窗口,其
中x1,y1,x2,y2是相对于整个屏幕的坐标。若clipflag为非0,则设定的图形以外
部分不可接触,若clipflag为0,则图形窗口以外可以接触。
void far clearviewport(void);
清除现行图形窗口的内容。
void far getviewsettings(struct viewporttype far* viewport);
获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport
中,其中viewporttype的结构说明如下:
struct viewporttype{
int left, top, right, bottom;
int cliplag;
};
二、屏幕操作
除了清屏函数以外,关于屏幕操作还有以下函数:
void far setactivepage(int pagenum);
void far setvisualpage(int pagenum);
这两个函数只用于EGA,VGA以及HERCULES图形适配器。setctivepage()函数
是为图形输出选择激活页。所谓激活页是指后续图形的输出被写到函数选定的
pagenum页面,该页面并不一定可见。setvisualpage()函数才使pagenum所指定
的页面变成可见页。页面从0开始(Turbo C默认页)。如果先用setactivepage()
函数在不同页面上画出一幅幅图像,再用setvisualpage()函数交替显示,就可以
实现一些动画的效果。
void far getimage(int xl,int yl, int x2,int y2, void far*mapbuf);
void far putimge(int x,int,y,void* mapbuf, int op);
unsined far imagesize(int xl,int yl,int x2,int y2);
这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到
屏幕上。首先通过函数imagesize()测试要保存左上角为(xl,yl),右上角为(x2,
y2)的图形屏幕区域内的全部内容需多少个字节,然后再给mapbuf分配一个所测
数字节内存空间的指针。通过调用getimage()函数就可将该区域内的图像保存在
内存中,需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,
其中getimage()函数中的参数op规定如何释放内存中图像。
对于imagesize()函数,只能返回字节数小于64K字节的图像区域,否则将会
出错,出错时返回-1。
本节介绍的函数在图像动画处理、菜单设计技巧中非常有用。
例13:下面程序模拟两个小球动态碰撞过程。
7.图形模式下的文本输出
在图形模式下,只能用标准输出函数,如printf(), puts(), putchar()函
数输出文本到屏幕。除此之外,其它输出函数(如窗口输出函数)不能使用,即是
可以输出的标准函数,也只以前景色为白色,按80列, 25行的文本方式输出。
Turbo C2.0也提供了一些专门用于在图形显示模式下的文本输出函数。下面
将分别进行介绍。
一、文本输出函数
void far outtext(char far*textstring);
该函数输出字符串指针textstring所指的文本在现行位置。
void far outtextxy(int x, int y, char far*textstring);
该函数输出字符串指针textstring所指的文本在规定的(x, y)位置。其中x
和y为象元坐标。
说明:
这两个函数都是输出字符串,但经常会遇到输出数值或其它类型的数据,
此时就必须使用格式化输出函数sprintf()。
sprintf()函数的调用格式为:
int sprintf(char*str, char*format, variable-list);
它与printf()函数不同之处是将按格式化规定的内容写入str指向的字符串
中,返回值等于写入的字符个数。
例如:
sprintf(s,”your TOEFL score is%d”, mark);
这里s应是字符串指针或数组, mark为整型变量。
关于rectangle函数,rectangle函数怎么用的介绍到此结束,希望对大家有所帮助。




