| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7397 人关注过本帖
标题:学会了C语言还是不知道图形界面是怎么做出来的,有没有人懂的,教一下,我自 ...
只看楼主 加入收藏
晨阳、
Rank: 2
等 级:论坛游民
帖 子:44
专家分:20
注 册:2017-3-4
结帖率:72.73%
收藏
已结贴  问题点数:10 回复次数:8 
学会了C语言还是不知道图形界面是怎么做出来的,有没有人懂的,教一下,我自己做点小游戏也好做
学会了C语言和一点C++,还是不知道图形界面是怎么做出来的,看到别人做的软件都可以有一点界面,有没有人懂的,教一下,我自己做点小游戏也好做,不然真的有点难过
搜索更多相关主题的帖子: 学会 C语言 图形 界面 小游戏 
2018-05-03 16:46
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
找个图形库试试
搜一下“C语言图形库”
2018-05-03 16:56
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:2 
     C语言具有汇编语言的功能,便于直接控制计算机显示器等系统硬件,又能完成复杂的处理和运算,因而适合于开发图形软件。目前使用的C语言提供了丰富的图形函数,利用这些库函数可以开发出各种实用的图形系统。
  在字符界面下的图形软件必须运行在图形模式下,该模式下,屏幕是由像素阵列组成,每个像素在屏幕上显示一个点,左上角的位置为(0,0),X轴坐标值从左到右递增,Y轴坐标值从上到下增加。C语言的图形处理函数包含在库文件graphics.lib中,有关的函数说明和符号常量在头文件graphics.h中定义。C语言的图形函数可以分为七类,分别是图形系统控制函数,绘图及填充函数,屏幕管理函数,图形方式下的文本输出函数,颜色控制函数,错误处理函数,状态查询函数。C语言下实现的基本图形功能包含光标显示函数,图形复制函数,图形移动函数,图形清除函数。
  1 初始化图形系统
 在C语言下要进入图形系统,就要设置图形工作模式,将图形系统初始化,即将当前位置,调色板,颜色等复位为系统规定的缺省值。为此必须调用库函数initgraph(),它可以根据用户的要求或自动检测与之相关联的视频适配器,选择相应的驱动程序和设置图形工作模式。该函数的原型为:void far initgraph(int far*graphdriver,int far*graphmode,char far *pathtodriver),其中graphdriver是一个整形指针,用于指定要调入的图形驱动程序,参数graphmode也是一个整形指针,用来说明用户指定的图形显示方式,参数pathtodriver说明驱动程序的路径,下面就是一个图形初始化函数。
   void initg(){
  int driver,mode;
   int back=1;
   struct linesettingstype, saveline;
   driver=DETECT;
   initgraph(&driver, &mode, “\\bgi”);
  getlinesettings(&saveline);
   setlinestyle(0,1,1);
   box(0,0,639,479,15);
   setlinestyle(saveline.linestyle,saveline.upattern,saveline.thickness);
  setviewport(1,1,6638,478,1);
   setbkcolor(back);}
  2 光标显示函数
   void xhairs(int x, int y)
  { int i;
  for(i=x-8;i<=x+8;i++)
   putpixel(i, y ,getpixel(i,y) 12)
   for(i=y+8;i>=y-8;i--)
  putpixel(x, i ,getpixel(x,i) 12)
  return;}
  getpixel()函数从指定坐标位置取得原屏幕显示像素的颜色与整数12(淡红色)异或,以保证像素的可见性,成为putpixel()函数在同一位置显示像素的指定颜色。
   3 图形复制函数
 void copy(int startx, int starty, int endx, int endy, int x, int y) <br>  {int i,j;
  int start1,start2 ,end1 ,end2;
  char c;
  start1=startx  endx1=startx>endx?startx:endx;
start2=starty  endy2=starty>endy?starty:endy;
  for(;start1<=end1 ;start1++ ,x++)
   for(i=start2 ,j=y ;i<=end2;i++ ,j++)
   {c=getpixel(start1,i,0);
   putpixel(x,j,c);
 }}
  该函数用于将屏幕上指定部分的图形复制到屏幕上的任意指定位置,由函数getpixel点取得指定区域的像素颜色C,作为putpixel的指定颜色在要复制的位置上逐点显示。
  4 图形移动函数
  void move(int startx, int starty, int endx, int endy, int x, int y)
  {int i,j;
   int start1,start2,end1 ,end2;
   char c;
  start1=startx  endx1=startx>endx?startx:endx;
start2=starty  endy2=starty>endy?starty:endy; 
 for(;start1<=end1;start1++ ,x++)
  for(i=start2 ,j=y;i<=end2;i++,j++)
   {c=getpixel(start1, i);
   putpixel(start1,i,0);
 putpixel(x,j,c);
 }}
  在copy函数中增加清除原图形区域语句,即增加putpixel(start1,i,0)语句,由于指定颜色为背景色(0-黑色),故消去原区域中的图形,完成了移动图形功能。
  5 清除图形功能函数
  void erase(int startx, int starty,int endx, int endy)
   {int i,j;
   int start1,start2,end1,end2;
  start1=startx  endx1=startx>endx?startx:endx;
    start2=starty  endy2=starty>endy?starty:endy;
    for(;start1<=end1;start1++,x++)
  for(i=start2,j=endy ;i<=end2;i++,j++)
   {getpixel(start1, i,0);
  putpixel(start1, i,0);
 }}
  将move函数中的putpixel(x,j,c)语句去掉,即可实现指定区域图形的清除功能。
2018-05-03 17:30
晨阳、
Rank: 2
等 级:论坛游民
帖 子:44
专家分:20
注 册:2017-3-4
收藏
得分:0 
回复 3楼 自学的数学
c++ 面怎么调用
2018-05-03 19:18
童生
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:205
专家分:455
注 册:2018-3-7
收藏
得分:2 
百度 控件,组件
2018-05-03 19:44
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:2 
下个easyx配合vc使用
2018-05-03 20:02
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
收藏
得分:2 
http://www.  这是现在比较流行的图形库
http://      另一个比较好用的图形库
顺便提醒下EASYX如果不支持PNG格式图像,所以搞透明背景会非常复杂

printf("萌新一枚,请多指教");
2018-05-03 21:34
jxdeng3989
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2018-5-4
收藏
得分:2 
可以学下QT, C++ 语法; 不过要先学下C++。  QT 是跨平台的。也很容易移植。
2018-05-04 10:41
汉家萌妹子
Rank: 2
等 级:论坛游民
威 望:5
帖 子:56
专家分:74
注 册:2018-8-21
收藏
得分:0 
可以参考我qq空间写的一篇文章,地址:https://user.qzone.
2018-08-24 10:44
快速回复:学会了C语言还是不知道图形界面是怎么做出来的,有没有人懂的,教一下 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014295 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved