免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 22250 | 回复: 61
打印 上一主题 下一主题

[其他] 分享我的C语言项目源代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-02 22:59 |只看该作者 |正序浏览
本帖最后由 lc-soft 于 2012-07-17 14:03 编辑

项目中还有待完善的地方:
完善鼠标处理功能,使之支持鼠标滚轮。

图形圆角化。(窗口圆角边框需要用到)
图形描边。
图形阴影绘制。(实现窗口阴影)
完善图形旋转算法。


完善字体处理功能,目前使用的是freetype2,自己写的代码还不能很好的支持宋体。






项目主页:  http://lcui.org/(建设中)
项目相关信息页面:  http://sf.net/projects/lcui/
联系邮箱:lc-soft@live.cn

网站是在sourceforge.net提供的免费空间里搭建的,以后会继续完善网站。

发布前的一段时间,发现 照片查看器 的运行效果不怎么满意,本打算是将 照片查看器 的源码附在项目源码中一同发布,可是,由于时间紧迫,只好等到后续版本的更新在加入进去。

注意一下某些目录下README文件,打开看看,应该对你有所帮助。
有些没有后缀名的文件,是文本文件。

想要测试程序的图形显示效果的话,请你将你的linux系统切换到终端模式,按ctrl+alt+F1,不一定要F1,F2,F3都可以。

现在主要是完善基础功能的代码,基础功能决定上层功能,不把基础功能完善好,以后要修改时,上层功能的代码也需要更改,很麻烦。

先贴出Hello World的源代码:
  1. #include <LCUI_Build.h> /* 包含LCUI的头文件 */
  2. #include <unistd.h>

  3. int main(int argc, char*argv[])
  4. {
  5.     LCUI_Init(argc, argv);/* LCUI初始化 */
  6.     LCUI_Widget *window, *label;
  7.     LCUI_Graph pic;
  8.     /* 初始化结构体 */
  9.     Graph_Init(&pic);
  10.     /* 载入库中自带的图形数据,这个图形是18x18尺寸的LCUI的图标 */
  11.     Load_Graph_Icon_LCUI_18x18(&pic);
  12.     /* 创建部件 */
  13.     window  = Create_Widget("window");
  14.     label   = Create_Widget("label");
  15.    
  16.     /* 设定窗口标题的文本 */
  17.     Set_Window_Title_Text(window, "测试窗口");
  18.     /* 设定窗口标题的图标 */
  19.     Set_Window_Title_Icon(window, &pic);
  20.     /* 改变窗口的尺寸 */
  21.     Resize_Widget(window, Size(320, 240));
  22.     /* 将窗口客户区作为label部件的容器添加进去 */
  23.     Window_Client_Area_Add(window, label);
  24.     /* 居中显示 */
  25.     Set_Widget_Align(label, ALIGN_MIDDLE_CENTER, 0, 0);
  26.     /*
  27.      * 设定label部件显示的文本
  28.      * <color=R,G,B>文字</color> 表示的是:“文字”将使用自定义颜色
  29.      * Set_Label_Text函数使用方法和sprintf函数基本一样,支持控制符
  30.      **/
  31.     Set_Label_Text(label,
  32.                 "Hello World!\n"
  33.                 "<color=255,0,0>世</color>"
  34.                 "<color=100,155,0>界</color>"
  35.                 "<color=0,255,0>你</color>"
  36.                 "<color=0,100,155>好</color>"
  37.                 "<color=0,0,255>!</color>\n");
  38.    
  39.     /*
  40.      * 改变label部件的字体大小,单位为pixel(像素),不是pt(点数)
  41.      * 第三个参数是自定义使用的字体文件,我设定为NULL,表示不使用。
  42.      **/
  43.     Set_Label_Font(label, 24, NULL);
  44.     /* 显示部件 */
  45.     Show_Widget(label);
  46.     Show_Widget(window);
  47.     LCUI_Main(); /* 进入主循环 */
  48.     return 0;
  49. }
复制代码
效果图:


还有其它测试程序的效果截图,这个是进度条的效果:



文本标签部件的效果:



还写了个时钟,用了图形旋转算法:





之前写了个猜拳的游戏:



还写了个 照片查看器 :



可是,这个照片查看器使用 0.12.3版的LCUI实现出来的效果还不怎么满意,暂时不公开代码。


重点就在这里了,LCUI的下载链接:
sourceforge.net:http://sourceforge.net/projects/lcui/files/



LCUI是什么?
LC就是我的名字拼音LiuChao的首字母,UI即User Interface(用户界面)的简称,这个名字只是暂定的,在以后可能会更改;它是一个图形界面库,可为程序的图形界面的实现提供简单的支持。



不是已经有了GTK、Qt等开源项目吗?你这不是在重复发明轮子么?闲着蛋疼?
起初写程序是为了扩展自己的学习机的应用程序,后来发现C语言原来可以实现图形显示,在mgaview的源码的帮助下,终于让自己的程序显示了图形,可是,想写的带图形界面的程序有不少,为了能为以后的程序的图形界面的实现提供统一的API,减少写重复的代码,提高代码复用性,就有了写图形界面库的想法。

依赖哪些库?
字体处理:freetype2
触屏支持:tslib
线程支持:pthread
图片处理:libpng和libjpeg
请确保你在编译本项目源代码前,都安装了以上几个库。

其它看着眼花的没多大用处的内容已经删去,主要内容在上面。

论坛徽章:
0
62 [报告]
发表于 2012-05-04 23:43 |只看该作者
nketc 发表于 2012-05-02 23:58
int main(int argc, char*argv[])
/* 主函数,程序的入口 */
{


怎么说呢,这个东西见仁见智吧

论坛徽章:
0
61 [报告]
发表于 2012-05-04 23:37 |只看该作者
本帖最后由 lc-soft 于 2012-05-04 23:43 编辑

回复 60# 三月廿七

我说的大致是:你可以用LCUI写小游戏,LCUI只负责图形显示,游戏核心算法由代码作者自己写,LCUI只是个辅助。
LCUI是个GUI库,不是游戏引擎库,实现象棋的棋盘显示倒是没什么,但没实质性的功能,没有AI,不能人机对战,也没设定各种棋子的走法。
这帖子的确没什么实质性内容,就是一堆文字+几张图片+链接。

论坛徽章:
0
60 [报告]
发表于 2012-05-04 19:40 |只看该作者
本帖最后由 三月廿七 于 2012-05-04 19:44 编辑

我记得你说LCUI可以 象棋这样的小游戏, 就是不知道你什么时候可以写出来,?

我发现你的这个帖子没什么实质性内容, 高级概念到是不少 ,/

论坛徽章:
0
59 [报告]
发表于 2012-05-04 19:32 |只看该作者
// 1,该怎样为函数命名?该用哪种命名规范?
&&
// 另外,我有个想法:
// 弄若干个结构体,每个结构体中储存一类函数的函数指针,然后,定义若干个结构体变量,使用函数时就可以类似

你的这些问题以及想法 都是非常非常不靠谱的,

论坛徽章:
0
58 [报告]
发表于 2012-05-04 17:54 |只看该作者
回复 50# 幻の上帝


    你说的有道理

论坛徽章:
0
57 [报告]
发表于 2012-05-04 17:50 |只看该作者
回复 48# MMMIX


还有用户。

用户不一定是维护者。

换句话说,是给人看的更靠谱,只是这就基本等于一句话费了

论坛徽章:
0
56 [报告]
发表于 2012-05-04 10:29 来自手机 |只看该作者
本帖最后由 lc-soft 于 2012-05-04 18:54 编辑

回复 52# 三月廿七

只是交流一下自己的想法,想看看大家对此想法是否有意见。
舞文弄墨,高谈阔论?其实我语文水平也不咋的,貌似大侠对这类言论有点反感。

论坛徽章:
0
55 [报告]
发表于 2012-05-04 10:21 来自手机 |只看该作者
但我这项目源码主要是分享给国人的。

论坛徽章:
0
54 [报告]
发表于 2012-05-04 10:16 来自手机 |只看该作者
本帖最后由 lc-soft 于 2012-05-04 18:56 编辑

回复 48# MMMIX
维护者的话,如果我这项目的源码主要是公开给国内会编程的人看的,那么,他们是希望代码中的注释是中文的,还是希望是英文的?开放源代码主要是和其他人交流一下编程知识,注释弄成全英文的话,会阻碍和一部分人的交流。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP