一、画圆和椭圆
void circle( int x, int y, int radius );
画一个圆,圆心为(x,y),半径为radius.
void ellipse( int x, int y, int stangle, int endangle, int xradius, int yradius );
画一个椭圆,圆心为(x,y),开始角度为stangle,结束角度为endangle,x方向上的半径为xradius,y方向上的半径为yradius;
练习1.
画一个圆,以(4,3)为圆心,半径为3,为了画的清楚点,设置整个屏幕的左下角为原点,Y轴的最大值为6.X轴的最大值为8.
#include <stdio.h>
#include <graphics.h>
#include <conio.h>//console io
#include <dos.h> //sleep
#define SCALE 80
/*
转换用户坐标系到屏幕坐标系
用户坐标以屏幕左下标为原点,X轴最大值为8,Y轴最大值为6
@param axis_x 用户的x坐标
@param axis_y 用户的y坐标
@param screen_x 返回对应的屏幕x坐标
@param screen_y 返回对应的屏幕y坐标
*/
void change_axis( double axis_x, double axis_y, int * screen_x, int * screen_y )
{
*screen_x = (int)( axis_x * SCALE );
*screen_y = 480 - (int)(axis_y * SCALE );
return ;
}
int main (void)
{
int graph_driver = VGA;
int graph_mode = VGAHI;
char *graph_path = "D:\\DOS\\TC\\BGI";
int x,y,radius;
initgraph( &graph_driver, &graph_mode, graph_path);
radius = 1 * SCALE;
change_axis( 4.0, 3.0, &x, &y );
circle( x, y, radius );
getch();
closegraph();
return 0;
}
二、画实心的圆
画实心的圆需要用到另外两个函数。
circle会用背景色填充。
setfillstyle( SOLID_FULL,color);
SOLID_FULL 表示使用单色填充,color则指明这种颜色。
fillellipse( int x, int y, int xradius, int yradius );
用来填充一个椭圆。
我们使用相等的xradius和yradius来画一个填充的圆。
练习2:
画一个匀速运动的小圆,从左边匀速运动到右边,然后匀速返回。
每sleep(1)一次,小圆运动10个px.小圆的大小为10px;
#include <stdio.h>
#include <graphics.h>
#include <dos.h>
#include <conio.h>
/*
画一个填充的圆
@param x x坐标
@param y y坐标
@param radius 半径
@param color 颜色
*/
void fillcircle( int x, int y, int radius, int color )
{
setfillstyle( SOLID_FILL, color );
setcolor( color );
fillellipse( x, y, radius, radius );
}
int main(void)
{
int graph_driver = VGA;
int graph_mode = VGAHI;
char *graph_path = "D:\\DOS\\TC\\BGI";
int x, y;
int v;
initgraph( &graph_driver, &graph_mode, graph_path );
x = 10;
y = 240;
v = 5;
//如果没有按键
while( kbhit()==0 )
{
fillcircle( x,y,10,BLACK);//用背景色填掉原来的圆
if( x >= (640-10) )
{
v = -5;//碰到右边界原速返回
}
else if( x <= 10 )
{
v = 5;//碰到左边界原速返回
}
x = x + v;
fillcircle( x, y, 10,RED );//重新画红色的圆
sleep(1);
}
getch();
closegraph();
return 0;
}
分享到:
相关推荐
v++6.0下运行,在mfc中进行绘制椭圆-圆-矩形,所谓的动态画线,画矩形,画椭圆的本质就是在于消隐问题的解决以及对Windows消息循环机制的理解,消隐问题:因为MFC中有一个函数SetROP2,通过将该函数的参数设置为R2—...
世界坐标系原点在视图左上角,本例子通过世界坐标转换,将坐标原点定位在视图中央,Y轴向上,X轴向右,并绘制坐标轴,基于逻辑坐标系下的绘图,可将转换关系函数取消生效,对比世界坐标系下的绘图。 重写...
C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴
用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。使用QGraphics完成。 本示例使用QGraphics体系来实现,因为要移动对象,所以生成的图形必须是一个单独的对象,鼠标...
编写应用程序,利用鼠标在视图区内绘制圆和椭圆。要求在工具 条上创建两个按钮,分别代表绘制圆和绘制椭圆。实现代码中仅允许 使用 SetPixel 一种绘图函数,不可以使用其他绘图函数。 绘制图形的鼠标操作方式可自行...
VC坐标转换和绘制曲线,文件中有坐标转换的源码。
DDA算法绘制直线 中点Bresenham算法绘制圆和椭圆
C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 . 详细说明 http://blog.csdn.net/wyx100/article/details/42340217
列表分两列,第一列显示序号,第二列显示图形描述:"圆"或"正方形"。 a.在列表中单击右键,弹出删除菜单,单击删除菜单项,对应的图形序号从列表中消失,图形也从视图中消失。 b.对话框中除了列表控件外包含有编辑...
从matlabb数据库输入坐标,根据坐标绘制图形
利用百度地图鼠标绘制工具库绘制不规则几何图形并保存坐标转成覆盖物
第3章 系统概述 3.1 系统设计---------------------------------------------------------------------------------------12 图形模型-------------------------------------------------------------------------...
为了能够使用Qt开发图形绘制软件,首先应该掌握Qt的坐标系统。在Qt中,通过QPainter类来控制它的坐标系统。连同QPaintDevice类与QPaintEngine类,QPainter类构成了Qt绘图系统的基础。其中,QPainter用于执行绘图的...
计算机图形学孔令德版配套实验,代码及运行结果各类文件
基本图形绘制、图形变换、自由曲线绘制、图形裁剪、图形填充 二、二级子菜单(基本图形绘制) 1.直线绘制: 1)Bresenham绘制直线 2)DDA绘制直线 3)改进的Bresenham绘制直线 4)系统库函数绘制直线——直线线宽、...
真实感图形绘制-纹理处理,绘制真实图形的纹理,代码清晰,可以更换图片
GDI+绘制图形技术中,最基本的是坐标系统,坐标系统的默认度量单位是像素,我们需要熟练掌握GDI+中坐标的变化概念才能绘制出理想的图形来
运行samp8_3实例程序,展示画点和绘制曲线的绘图效果。 绘图设备的物理坐标是基本的坐标系,通过QPainter的平移、旋转等变换可以得到更容易操 作的逻辑坐标。为了实现更方便的坐标,QPainter还提供了视口(Viewport)...
该代码为计算机图形学的一个实验,实验内容:绘制任意斜率直线