`
k7_1983
  • 浏览: 6422 次
  • 性别: Icon_minigender_1
  • 来自: 娄底
最近访客 更多访客>>
社区版块
存档分类

[学习DOS下的图形操作]第三天 绘制圆和球-匀速运动的圆和简单坐标的转换

    博客分类:
  • C
DOS 
阅读更多
一、画圆和椭圆
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;
}
分享到:
评论
1 楼 2c2c 2009-02-12  
小沈阳的99句经典台词


1 这是为什么呢
2 走别人的路,让别人无路可走
3 我太有才了,上辈子我是裁缝
4 都说我长得寒碜,不过我妈挺稀罕我,我妈说小时候带我去公园,老多人围着问我妈, ‘大姐,你这猴哪买的?现在我都长开了’
5 出名了仍要慢慢发展看看我穿的这身衣服,啥,你说我这大红配大绿不好看,别瞧不起人,我的衣服都是从专卖店买的。
6 我在商场逛,随便问一个服务员,你卖这衣服多少钱?她说,180元。我说,30元卖不?她说行,然后就让我交钱,我说,我不买,就是随便溜达。
7 太阳出来东方亮 山炮啥样我啥样
8 多喜庆阿
9 ——我看你长得好年轻哦 这化妆品好厉害哦 眼瞅着都六十的人了 谁能看出来了
——谁六十阿 人家一朵花没开呢
——是啊 仙人掌嘛 六十年一开花
10 pia pia 我就溜达,我可顽皮了呢!!
11 眼睛一闭一睁一天儿过去了哈,眼睛一闭不睁,一辈子过去了哈!
12 我到家了,你们还追啊!!
13 不用拍,到我的班就是休息!
14 我看谁没鼓掌,到晚上我就爬你家窗户~~
15 我的中文名叫小沈阳,我的英文名叫xiao shen yang !
16 老妹儿,你能抓着我啊~~
17 咿~~穿跑偏了,哎妈呀,我说走道咋没有裆那
18 我是有身份的人,什么是有身份的人呢?就是有身份证的人就是有身份的人!
19 太阳出来照大地! 欢迎大伙来看戏
20 要问我是哪一个,人送外号小巩俐
21 诶呀妈呀,我可稀罕我这个小包了。320.。。。打完折15
22 我走死你~
23 观众朋友们吖~~他们都说我长地像变态~!
告诉你们,其实我一点都不像~!!!!! 。。。。。。我就是。。。
24 放你个五彩玲珑月光电缆屁!
25 趴趴地就溜达,谁叫我也不回头。
26 到我班儿了嚎,大伙儿不用老鼓掌.你们的手腕子一疼.我的心都疼.
27 你瞎啊!!!我这是棉花套只!!!!
28 哎呀我说别人跑你不跑是吧...你藐视我是吧! 我说你咋不蹽呐~~我来啦....
29 来哥啊?我小唐,恩那~到女儿国了~我操~老狠了~扇嘴巴子~ 想开心看二人转,想闹心就看一下足球,想往死了闹心就看一下中国足球
30 人不可貌相`海水不可瓢崴
31 就那伊拉克 你说国家都快黄了
32 你瞅你长这么难看还出来溜达,在家呆着被 就光看你 都撞树上了
33 感谢你们鸦雀无声~
34 我虽然不是名人朋友们,但是像我们周边这些国家,像马来西亚、泰国、越南、新加坡,还有俄罗斯哈----------------我都没去过~
35 别看我长得变态 其实我老有才了
36 这种感觉就是上气不接下气 。。。啊马。。。上就要短气
37 阿姨阿姨夫你们好~
38(模仿阿杜)你听见了么? 呃~我还没唱呢~
39 老妹你别害怕 我是人 不是鬼阿~
40 呸 臭不要脸的~
41 我给你讲我就传我这身休闲~
42 你说我是男是女袄 这个问题给我也整矛盾了~
43 奶奶 你真不去袄 那太好了 ~
44 奶奶 我不是玩意
45 大家晚上九点多钟好!
46 我已经隆重滴开光了.
47 四五个大老爷们追着打我,跑着跑着,我就跑到一个坟圈里了,他们看我趴在一个坟堆上不动,问我咋回事,我说,我回家了,吓得他们转身就跑。
48 他们把我名刻错了 我出来改改
49 走别人的路,让别人无路可走
50 我到家了,你们还追啊!!
51 哎,老妹儿你说这是为什么呢? 为什么呢?!
52 这辈子和你过的够够的了,下辈子一定要找一个骑着白马的王子。
——骑白马的不一定是王子,唐僧有时候也骑白马。
——唐僧也比你强!!
——是啊,能过就过,不能过吃肉呗。
53 我太有才了,上辈子我是裁缝
54 人是衣服马是鞍,一顿不吃饿的慌!
55 都说我长得寒碜,不过我妈挺稀罕我,我妈说小时候带我去公园,老多人围着问 我妈, ‘大姐,你这猴哪买的?现在我都长开了’
56 看看我穿的这身衣服,啥,你说我这大红配大绿不好看,别瞧不起人,我的衣服都是从专卖店买的。寿衣专卖店!
57 小妹儿看见我就乐了,哎呀,大哥,你长得真像大海,可惜大哥,我晕船啊,看见大海就想吐啊!
58 我在商场逛,随便问一个服务员,你卖这衣服多少钱?她说,180元。我说,30元卖不?她说行,然后就让我交钱,我说,我不买,我就溜达,吭。
59 太阳出来东方亮 山炮啥样我啥样
60 ——我看你长得好年轻哦 这化妆品好厉害哦 眼瞅着都六十的人了 谁能看出来了
——谁六十阿 人家一朵花没开呢
——是啊 仙人掌嘛 六十年一开花
61 就朋友们哈~ 没事儿...我就爱逛街 恩那~我就溜达 ...哎,谁叫我也不回头...就是溜达...完了我还蹦哒儿的呢~~ 可顽皮了~~。
62 人生就是这样"眼睛一闭一睁一天过去了,眼睛再一闭不睁一辈子过去了"
63 不用拍,到我的班就是休息!
64 我看谁没鼓掌,到晚上我就趴你家窗户~~
65 我的中文名叫小沈阳,我的英文名叫xiao小 shen沈 yang阳 !
66 老妹儿,你能逮着我啊~~
67 你瞎啊,这是裤衩子!
68 咿~~穿跑偏了,哎妈呀,我说走道咋没有裆那
69 我是有身份的人,什么是有身份的人呢?就是有身份证的人就是有身份的人!
70 太阳出来照大地!欢迎大伙来看戏
71 要问我是哪一个,人送外号小巩俐
72 诶呀妈呀,我可稀罕我这个小包了。原价320.。。。打完折15
73 ——走别人的路,让别人无路可走!
——你就是走我们女人的路,让女人无路可走!
——我走死她!
74 观众朋友们吖~~他们都说我长地像变态~!
告诉你们,其实我一点都不像~!!!!!
。。。。。。我就是。。。
75 放你个五彩玲珑月光电缆屁!
76 到我班儿了嚎,大伙儿不用老鼓掌.你们的手腕子一疼.我的心都疼.
77 你瞎啊!!!我这是棉花套子!!!!
78 哎呀我说别人跑你不跑是吧...你藐视我是吧! 我说你咋不蹽呐~~我来啦....
79 来哥啊?我小唐,恩那~到女儿国了~我c~老狠了~扇嘴巴子~
80 想开心看二人转,想闹心就看一下足球,想往死了闹心就看一下中国足球
81 人不可貌相`海水不可瓢崴
82 给朋友们来个另类点的由台湾著名歌星陈水扁演唱的美国著名摇滚电视剧连续剧水浒传主题歌护花使者的片头曲刀郎的情人献给大家
83 朋友们呐.他们都说乍瞅我长的坷趁.其实我一点也不坷趁.不信你细瞅.......还不如乍瞅呢哈
84 我不是名人 就是一人名
85 这跟头 我练七八年~
86 “御弟哥哥”
“八戒”
“你骂谁呢?谁是八戒啊?”
“那你也没告诉我你演的是谁啊!”
“我演女儿国的国王,你叫我女王吧”
“女王吧”
“骂谁呢?叫我女王或者女王陛下”
“御弟哥哥”
“女王陛下”
“你从何处而来啊?”
“伊拉克”
“伊拉克?太tm远了吧?”
“整远了是啊”
87 就那伊拉克 你说国家都快黄了
88 -我要的是真经 -你TMD我这也不是水货啊!
89 -没打着 没打着 你妈屁股长白毛!
90 -你瞅你长这么难看还出来溜达,在家呆着被 光顾瞅你了 都撞树上了
91 感谢你们的鸦雀无声~
92 我虽然不是名人朋友们,但是像我们周边这些国家,像马来西亚、泰国、越南、新加坡,
还有俄罗斯哈----------------我都没去过~
93 别看我长得变态 其实我老有才了
94 这种感觉就是上气不接下气 。。。啊马。。。上就要短气
95 阿姨阿姨夫你们好
96 模仿阿杜)你听见了么? 呃~我还没唱呢~
97 想脱贫致富学唱二人转
98 到我班儿了嚎,大伙儿不用老鼓掌.你们的手腕子一疼.我的心都疼.
99 朋友们呐.他们都说柞瞅我长的坷趁.其实我一点也不坷趁.不信你细瞅.......还不如柞瞅呢哈

相关推荐

    绘制椭圆-圆-矩形

    v++6.0下运行,在mfc中进行绘制椭圆-圆-矩形,所谓的动态画线,画矩形,画椭圆的本质就是在于消隐问题的解决以及对Windows消息循环机制的理解,消隐问题:因为MFC中有一个函数SetROP2,通过将该函数的参数设置为R2—...

    Qt坐标系转换(绘制逻辑坐标系)

    世界坐标系原点在视图左上角,本例子通过世界坐标转换,将坐标原点定位在视图中央,Y轴向上,X轴向右,并绘制坐标轴,基于逻辑坐标系下的绘图,可将转换关系函数取消生效,对比世界坐标系下的绘图。 重写...

    C#绘制坐标轴 C#绘制坐标轴 C#绘制坐标轴

    C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴

    Qt鼠标拖动绘制基本几何图形(直线、矩形、圆形、椭圆)

    用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。使用QGraphics完成。 本示例使用QGraphics体系来实现,因为要移动对象,所以生成的图形必须是一个单独的对象,鼠标...

    利用鼠标绘制圆和椭圆

    编写应用程序,利用鼠标在视图区内绘制圆和椭圆。要求在工具 条上创建两个按钮,分别代表绘制圆和绘制椭圆。实现代码中仅允许 使用 SetPixel 一种绘图函数,不可以使用其他绘图函数。 绘制图形的鼠标操作方式可自行...

    VC坐标转换和绘制曲线

    VC坐标转换和绘制曲线,文件中有坐标转换的源码。

    简单图形绘制(直线、圆、椭圆)

    DDA算法绘制直线 中点Bresenham算法绘制圆和椭圆

    C#WPF 绘制几何图形 2D坐标 sin曲线

    C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 . 详细说明 http://blog.csdn.net/wyx100/article/details/42340217

    绘制图形操作(圆和正方形) 保存到列表中

    列表分两列,第一列显示序号,第二列显示图形描述:"圆"或"正方形"。 a.在列表中单击右键,弹出删除菜单,单击删除菜单项,对应的图形序号从列表中消失,图形也从视图中消失。 b.对话框中除了列表控件外包含有编辑...

    xxXLGJ_matlab_根据坐标绘制图形_

    从matlabb数据库输入坐标,根据坐标绘制图形

    百度地图绘制多边形几何图形并保存坐标转成覆盖物

    利用百度地图鼠标绘制工具库绘制不规则几何图形并保存坐标转成覆盖物

    VTK User's Guide(中文完整版)

    第3章 系统概述 3.1 系统设计---------------------------------------------------------------------------------------12 图形模型-------------------------------------------------------------------------...

    Qt坐标系统与图形绘制

     为了能够使用Qt开发图形绘制软件,首先应该掌握Qt的坐标系统。在Qt中,通过QPainter类来控制它的坐标系统。连同QPaintDevice类与QPaintEngine类,QPainter类构成了Qt绘图系统的基础。其中,QPainter用于执行绘图的...

    计算机图形学绘制直角坐标系

    计算机图形学孔令德版配套实验,代码及运行结果各类文件

    计算机图形学大作业 基本图形绘制、图形变换、自由曲线绘制、图形裁剪、图形填充

    基本图形绘制、图形变换、自由曲线绘制、图形裁剪、图形填充 二、二级子菜单(基本图形绘制) 1.直线绘制: 1)Bresenham绘制直线 2)DDA绘制直线 3)改进的Bresenham绘制直线 4)系统库函数绘制直线——直线线宽、...

    真实感图形绘制-纹理处理

    真实感图形绘制-纹理处理,绘制真实图形的纹理,代码清晰,可以更换图片

    vb.net 绘制坐标图形

    GDI+绘制图形技术中,最基本的是坐标系统,坐标系统的默认度量单位是像素,我们需要熟练掌握GDI+中坐标的变化概念才能绘制出理想的图形来

    QT-坐标系统和坐标变换-绘制曲线应用程序示例

    运行samp8_3实例程序,展示画点和绘制曲线的绘图效果。 绘图设备的物理坐标是基本的坐标系,通过QPainter的平移、旋转等变换可以得到更容易操 作的逻辑坐标。为了实现更方便的坐标,QPainter还提供了视口(Viewport)...

    计算机图形学-绘制直线

    该代码为计算机图形学的一个实验,实验内容:绘制任意斜率直线

Global site tag (gtag.js) - Google Analytics