|
不打算做展讯了,留些资料,写点东西 !
想来想去不知道怎么开始,还是挑个有意思的东西吧
仿IPHONE的指南针
<img src="attachments/dvbbs/2012-12/201212141523161669.jpg" border="0" onclick="zoom(this)" onload="if(this.width>document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" />
指南针这个东西算是iphone上一个独立简单的模块,Mocor上没有指南针的传感器
不过用下方向的传感器也是可以的 只是不大准确 不过我们的要求很简单
只要要求能旋转即可!
Mocor上做动画一般是用定时器控制的图片的帧数即可显示
另外关于这个指南针的重点就是 旋转输出函数 GRAPH_RotateArbitrary
其实这个东西和模拟闹钟的指针差不多的,不过闹钟是封装好的函数
旋转函数GRAPH_RotateArbitrary两个参数ROTATE_ARBITRARY_IN_T ROTATE_ARBITRARY_OUT_T 意思很好理解 ROTATE_ARBITRARY_IN_T 就是要输入的,以及输出的格式 ROTATE_ARBITRARY_OUT_T 就是接收旋转后输出的的结果,但是实质的情况是比较怪异的 out的基本上没用到 为什么这样,我也没明白展讯的设计
typedef struct
{
IMGREF_SIZE_T src_size; //source image size
IMGREF_DATA_FORMAT_E src_format; //source image format, both RGB565 and ARGB888 are allowed
IMGREF_CHN_T src_chn; //source image data buffer
IMGREF_POINT_T src_center; //rotation center point of the source image
IMGREF_SIZE_T target_size; //target image size
IMGREF_DATA_FORMAT_E target_format; //target image format, be the same as that of the source image
IMGREF_CHN_T target_chn; //target image data buffer
IMGREF_POINT_T target_center; //rotation center point of the target image
int32 angle; //rotation angle
ROTATE_ARBITRARY_MODE_E mode; //rotated mode: auto crop or no crop of rotated image
BOOLEAN speed_up; //set TRUE to use quicker alogrithm. The source image will be overwritten.
}ROTATE_ARBITRARY_IN_T;
首先看看ROTATE_ARBITRARY_IN_T, src_ 等参数就代表 预先设置的输入参数
src_size 代表旋转的图片的尺寸(width,height)src_center 代表以原始图片的那个点做圆心旋转 (一般我们都去图片的中心点)src_chn (这个就是原始图片的 数据指针和大小了 这个指针我们有两种方法得到 一种是解码图片格式 一种用先读到layer中再获取。第一种的话很正规的方式 MMI_GetLabelImage 首先用这个资源函数得到图片存储的指针位置 然后由于我们旋转的是PNG函数 调用展讯的DecompressARGB 函数可以解码出图片的数据 这个数据就是我们 src_chn 所需要的数据)ROTATE_ARBITRARY_IN_T 中还有另外一个target参数 刚才我们不是说ROTATE_ARBITRARY_OUT_T没用上么?对我们确实没用上,我们最后用的是 ROTATE_ARBITRARY_IN_T 的target .从名字来看也比较明显 就是目标target_size 旋转后的大小 一般我们用原始的width+height 其他的参数和in是差不多的 关键的参数是angle 就是我们指定要旋转多少度 这个参数要注意一下 (0<angle<360) angle=30 顺时针转30 如果逆时针要转30 我们就用angle =360-30 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|