搜索
bottom↓
123
返回列表 发新帖
楼主: Gorgon_Meducer

[交流][2008-6-09 Update]手把手教你编写GUI——第一阶段:Fool GUI

  [复制链接]

出0入0汤圆

发表于 2013-2-1 23:40:08 | 显示全部楼层
mark xue xi xia

出0入0汤圆

发表于 2013-2-2 08:52:58 来自手机 | 显示全部楼层
做个记号

出0入0汤圆

发表于 2013-2-4 21:43:13 | 显示全部楼层
顶起!学会一种思路一生受用

出0入0汤圆

发表于 2013-2-5 09:48:49 | 显示全部楼层
watercat 发表于 2008-5-23 08:48
老实说,开源的精神是一回事儿,但我宁愿楼主事先把《现代操作系统》以及《Linux驱动程序设计》这两本书通 ...

你把这两本书读几遍了!推荐一下大家学习编写GUI的良方吧!期待中......

出0入296汤圆

 楼主| 发表于 2013-2-5 12:02:07 | 显示全部楼层
guowanling8061 发表于 2013-2-5 09:48
你把这两本书读几遍了!推荐一下大家学习编写GUI的良方吧!期待中......


08年的帖子了,不过说实话,我的确把这两本书或者说类似的书读了几遍……然后读完以后对GUI不感兴趣了……
优秀的GUI永远会有,优秀的操作系统亿万人在维护……程序员的智慧灿若星辰……所以我看了这些书以后觉得还是
要做点有意义的事情……

当然,这是后话了……作为一个工具,最大的目标是成为一个优秀的工具……真是悲剧……

出0入0汤圆

发表于 2013-2-25 20:47:15 | 显示全部楼层
跟着傻孩子有饭吃,搬板凳学习

出0入0汤圆

发表于 2013-3-1 17:59:54 | 显示全部楼层
怎么找不到第二阶段啊,楼主什么时候更新

出0入0汤圆

发表于 2013-3-25 19:06:13 | 显示全部楼层
能不能请教一个问题,我自己觉得ui基本上有两种实现方式:一种是菜单链表的形式(即绘的方式,小内存占用),另外的一种是开辟和LCD对应的RAM,先将要绘制的图形放在RAM中,然后再将RAM拷贝到LCD(显存)???请指教,还有什么更好的实现方式。。。

出0入296汤圆

 楼主| 发表于 2013-3-25 20:58:09 | 显示全部楼层
Irene 发表于 2013-3-25 19:06
能不能请教一个问题,我自己觉得ui基本上有两种实现方式:一种是菜单链表的形式(即绘的方式,小内存占用) ...

兄弟,我觉得吐槽不能,菜单是UI逻辑的一个要素,开辟RAM缓冲是刷新技术的一种,完全风马牛不相及,
打个比喻,就相当于拿VC++和C++甚至是Java做比较——前者是继承开发环境,后者是编程语言……

出0入0汤圆

发表于 2013-3-26 19:39:30 | 显示全部楼层
Gorgon_Meducer 发表于 2013-3-25 20:58
兄弟,我觉得吐槽不能,菜单是UI逻辑的一个要素,开辟RAM缓冲是刷新技术的一种,完全风马牛不相及,
打个 ...

哦,谢谢指正;其实我指的是一个是即绘(立即绘制),另外一个是你说的缓冲的方式;我想请教的是如何才能有效的设计UI。。

出0入296汤圆

 楼主| 发表于 2013-3-26 23:30:50 | 显示全部楼层
Irene 发表于 2013-3-26 19:39
哦,谢谢指正;其实我指的是一个是即绘(立即绘制),另外一个是你说的缓冲的方式;我想请教的是如何才能 ...

自己着手做一个小图形游戏,以后你就有心得了。推荐方块类游戏作为入门。
复杂的,可以考虑RPG。

出0入0汤圆

发表于 2013-7-11 19:35:25 | 显示全部楼层
精品一定要看

出0入0汤圆

发表于 2013-8-2 13:11:32 | 显示全部楼层
关注中,家里正好有块兼容的液晶,可以搞搞

出0入0汤圆

发表于 2013-8-3 07:37:07 来自手机 | 显示全部楼层
gui 改造

出0入0汤圆

发表于 2013-8-6 17:46:08 | 显示全部楼层
全部看完了,思路非常好,楼主强人啊,还学生时候就这么厉害!

出0入0汤圆

发表于 2013-10-7 00:49:18 | 显示全部楼层
从网上找的:

晓奇=>怎样在CVAVR中使用结构型数组
            怎样在CodeVision中使用结构型数组的用法实例 作者[xiaoqi]©
            --- 应网友提问而写 ---

    在编写带有点阵液晶模块的程序时,需要将字模数据写成结构型数组,程序的表达比较清晰,在C51中我们都已经习惯于这样
写,虽然会多占用几个字节空间, 但是对扩展维护很有利。以前我曾将这种结构用于ICCAVR中,没有遇到问题。但不久前有网友用
CVAVR却遇到了麻烦,怎么写都通不过,原因是CVAVR在这方面的语言格式要求比较严谨,必须严格按照C语言的格式书写,否则就
会报错,而且所报的错误有点莫名其妙,有时仅说你漏了一个分号或者是漏了一个花括号,让人无从下手,现在我们给出一个实例
的演示代码,供大家参考。
#include <90s8515.h>

char tt[32];

flash struct flash_structure{     // 定义汉字字模数据结构
      signed char Index[4];       // 这里一定要定义成偶数,大于2
      char Msk[32];               // 点阵码部分,大于等于点阵码字节数
} GB_16[2] ={

{"中", {0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
        0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00}},
{"文", {0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,
        0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x04,0x60,0x18,0x1E,0xE0,0x08,0x00,0x00}}
};

void main(void) // 测试用
{
unsigned char i;
        for(i=0;i<32;i++){
                tt[i]=GB_16[1].Msk[i];
        }
        while(1);
}

对应的汇编码:
          _GB_16:
          _0GB_16:
                  .DB  0xD6,0xD0, 0x0
          _1GB_16:
                  .DB   0x1, 0x0, 0x1, 0x0,0x21, 0x8,0x3F,0xFC
                  .DB  0x21, 0x8,0x21, 0x8,0x21, 0x8,0x21, 0x8
                  .DB  0x21, 0x8,0x3F,0xF8,0x21, 0x8, 0x1, 0x0
                  .DB   0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0
          _2GB_16:
                  .DB  0xCE,0xC4, 0x0
          _3GB_16:
                  .DB   0x2, 0x0, 0x1, 0x0, 0x1, 0x0,0xFF,0xFE
                  .DB   0x8,0x20, 0x8,0x20, 0x8,0x20, 0x4,0x40
                  .DB   0x4,0x40, 0x2,0x80, 0x1, 0x0, 0x2,0x80
                  .DB   0x4,0x60,0x18,0x1E,0xE0, 0x8, 0x0, 0x0

从汇编代码可以看到,实际占用的空间汉字部分只用了3字节而并不是我们定义的4字节,但这个第三字节对我们来说还是浪费掉了,
可惜。我们可以采用另一种写法,就是把汉字定义为int型,每个汉字可以节省一字节空间:
#include <90s8515.h>

char tt[32];

flash struct flash_structure{     // 定义汉字字模数据结构
      signed int Index;           // 这里定义为int型
      char Msk[32];               // 点阵码部分,大于等于点阵码字节数
} GB_16[2] ={
{'中', {0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,
        0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
        0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,
        0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00}},
{'文', {0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,
        0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,
        0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,
        0x04,0x60,0x18,0x1E,0xE0,0x08,0x00,0x00}}
};
对应的汇编码:
          _GB_16:
          _0GB_16:
                  .DW  0xD6D0
          _1GB_16:
                  .DB   0x1, 0x0, 0x1, 0x0,0x21, 0x8,0x3F,0xFC
                  .DB  0x21, 0x8,0x21, 0x8,0x21, 0x8,0x21, 0x8
                  .DB  0x21, 0x8,0x3F,0xF8,0x21, 0x8, 0x1, 0x0
                  .DB   0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0
          _2GB_16:
                  .DW  0xCEC4
          _3GB_16:
                  .DB   0x2, 0x0, 0x1, 0x0, 0x1, 0x0,0xFF,0xFE
                  .DB   0x8,0x20, 0x8,0x20, 0x8,0x20, 0x4,0x40
                  .DB   0x4,0x40, 0x2,0x80, 0x1, 0x0, 0x2,0x80
                  .DB   0x4,0x60,0x18,0x1E,0xE0, 0x8, 0x0, 0x0

    注意:两种定义方法上的区别,在汉字上对应于char时用双引号,而对应于int型时应该用单引号。
    编译以后可以用AVR Studio3调试,观察RAM窗口中的数据变化,就会发现其中的“文”所对应的点阵码全部被正确地复制到了
RAM地址0xe0开始的空间中,你可以逐个核对一下。


            Copyright&copy; 2001-2002, 晓奇工作室 E-Mail:info*xiao-qi.com


出0入0汤圆

发表于 2013-10-15 10:22:59 | 显示全部楼层
标记一下,学习了

出0入0汤圆

发表于 2015-2-2 16:58:51 | 显示全部楼层
mark,学习gui

出0入0汤圆

发表于 2015-2-2 20:35:16 | 显示全部楼层
mark   Fool GUI

出0入0汤圆

发表于 2015-8-14 22:47:24 | 显示全部楼层
mark一下,]手把手教你编写GUI——第一阶段:Fool GUI
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 18:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表