易码技术论坛

 找回密码
 加入易码
搜索
查看: 169439|回复: 5

源代码_GetBlock

[复制链接]
发表于 2004-12-5 12:03:00 | 显示全部楼层
lava编程规范已经剔除_GRAPH,_GBUF,并且不推荐使用_TEXT。
原因:
各种LCD的显存格式千差万别,直接操作显存在某些LCD上会得不到预期效果。
新版的lava认证将增加一条:凡使用了_GRAPH,_GBUF的不予认证资格。
 楼主| 发表于 2004-12-5 12:40:00 | 显示全部楼层
GetBlock原型: void GetBlock(int x,int y,int width,int height,int type,int data); 功能: 取屏幕图形 说明: 把屏幕或图形缓冲区的(x,y)坐标处的宽为width高height的矩形区域保存到内存地址data处。
      type=0:从图形缓冲区取图形,type=0x40:从屏幕取图形。
      注意:x和width忽略bit0-bit2。
可是Lava2的函数GetBlock并不是很完美啊..

1668_4869_678.rar

1 KB, 下载次数: 235

发表于 2004-12-5 13:27:00 | 显示全部楼层
GetBlock主要用于当弹出菜单时保存屏幕图形,限定位置从8的整数倍开始是为了便于快速处理。
如果不是从8整数倍开始,可以多保存点内容,没什么坏处。
发表于 2004-12-7 12:30:00 | 显示全部楼层
呵呵!新Lava可以保留_GRAPH和_TEXT _GUF
只要加入一些当前平台的状态信息就ok了
比如_WIDTH是LCD的宽 _HIGH是LCD的高 _GMODE 是LCD 的显示模式(黑白?16灰?256色?<---汗!)
。。。。。。。。。。。
删除了他们会很不方便的!况且加入_WIDTH等可以在久lava和新lava上跨平台!
比如160x80的16灰lava程序可以在320x160上用~~
想法怎么样啊?
。。。。。。。
[em05]
发表于 2004-12-7 17:34:00 | 显示全部楼层
不是这么简单的。
某些LCD的显存是上下反的,字节内反的,等等。
所以不建议直接操作显存。
 楼主| 发表于 2004-12-5 11:45:17 | 显示全部楼层 |阅读模式
#define onSCREEN 0x40
#define INVERSE 0x08
#define BIG_FONT 0x80
#define DRAW 0x01
#define FLIP 0x20
void _GetBlock(int x,int y,int w,int h,int buf,int data)
//Width=160;Height=80;
{
int bx,mb,i,my,mx,dest;
int Width,Height;
char prev,next;
mb=x%8;
i=0;
Width=160;Height=80;

for(my=y;my<y+h;my++)
for(mx=x/8;mx<(x+w)/8;mx++)
{
  dest=buf+mx+my*Width/8;
prev=*dest<<mb;
next=*(dest+1)>>(8-mb);
*(data+i)=prev|next;
i++;
}
}
void main()
{
char buffer[1600];
Circle(80,40,36,0,1);
_GetBlock(10,10,70,70,_GRAPH,buffer);
WriteBlock(0,0,70,70,onSCREEN|DRAW,buffer);

}
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-19 08:29 , Processed in 0.013516 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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