百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

图片显示框架(图片加载框架glide)

ccwgpt 2024-10-17 08:18 29 浏览 0 评论

说明:前面讲到用到的框架有显示菜单框架,通讯框架和多语言显示框架等,接下来讲的是图片显示框架,我们知道界面显示不光有文字显示还有图标图片显示,而文字和图片相辅相成,一个带界面中规模的工程都含有大量的文字和图片。文字和图片管理显得尤为重要,主要通过框架进行管理,文字显示框架前面有描述,图片框架是本文将讲解的。

注:前面讲诉到多语言显示框架也是为文字做准备的、有兴趣的的同学可以参考我之前的文章编程之封装框架 多语言显示框架 编程之通讯解析框架

下面我们着重讲解图片框架YDW


h图片框架内容:

//图片信息

typedef struct

{

UINT32 addr;//地址

UINT16 StartX;//起始x

UINT16 StartY;//起始y

UINT16 Width;//宽度

UINT16 High;//宽度等级

} YDW_TYP;

//图片操作显示

typedef struct

{

INT16U PIC_ID;//图片ID

U8 Index;//所在图片序号

UINT16 X;//起始X

UINT16 Y;//起始Y

U16 Color;//颜色

U8 JT_MaxLine:4;//拼切行总数

U8 JT_CurLine:4;//当前行拼切

U8 JT_MaxRow:4;//拼切列总数

U8 JT_CurRow:4;//当前列拼切

U8 Clear:1;//0显示 1清除

U8 Region:1;//0图片位置 1起始XY位置

U8 Joint:1;//0非拼图 1拼图

U8 :0;

} YDW_PIC_INF;


C图片框架内容:

// 图片信息

// 第0张图片

const YDW_TYP dw_Pic0_P0 = { 0x0, 47, 95, 227, 19 };

const YDW_TYP dw_Pic0_P1 = { 0x1234, 52, 95, 215, 19 };

...

// 第1张图片

const YDW_TYP dw_Pic1_P0 = { 0xCC604, 62, 175, 40, 400 };

const YDW_TYP dw_Pic1_P1 = { 0xD4304, 140, 175, 40, 240 };

...

// 第2张图片

const YDW_TYP dw_Pic2_P0 = { 0xDD4BC, 13, 96, 20, 24 };

const YDW_TYP dw_Pic2_P1 = { 0xDD87C, 12, 135, 20, 20 };

...

// 单张图片信息

// 第0张图片

const YDW_TYP *const DW_PIC_0[]=

{

&dw_Pic0_P0,

&dw_Pic0_P1,

};

// 第1张图片

const YDW_TYP *const DW_PIC_1[]=

{

&dw_Pic1_P0,

&dw_Pic1_P1

};

// 第2张图片

const YDW_TYP *const DW_PIC_2[]=

{

&dw_Pic2_P0,

&dw_Pic2_P1

};

...

//界面显示位置地址

const YDW_TYP *const *const Dw_PicAddr[] =

{

DW_PIC_0,

DW_PIC_1,

DW_PIC_2,

...

};

//各个界面的图片个数

const UINT8 Dw_PicAddr_Len[] =

{

sizeof(DW_PIC_0) / sizeof(DW_PIC_0[0]),

sizeof(DW_PIC_1) / sizeof(DW_PIC_1[0]),

sizeof(DW_PIC_2) / sizeof(DW_PIC_2[0]),

...

};

/***********************************************************************

* 函数名称 : Dw_PicSingle

* 描述 : 显示单个界面

* 输入形参 :

* 返回值 :

************************************************************************/

void YDW_Pic_Single(const YDW_TYP *dwPic)

{

UDisplaySmallPic(dwPic->addr, dwPic->StartX, dwPic->StartY, dwPic->Width, dwPic->High);//显示图片函数

}

// 通过操作属性显示图片

void YDW_Pic_SingleId(YDW_PIC_INF *PicInf)

{

if (PicInf->PIC_ID >= sizeof(Dw_PicAddr_Len) / sizeof(Dw_PicAddr_Len[0])) return;

if (PicInf->Index>= Dw_PicAddr_Len[PicInf->PIC_ID]) return;

if (PicInf->JT_CurLine > PicInf->JT_MaxLine - 1) PicInf->JT_CurLine = PicInf->JT_MaxLine - 1;

if (PicInf->JT_CurRow > PicInf->JT_MaxRow - 1) PicInf->JT_CurRow = PicInf->JT_MaxRow - 1;

...

Dw_Pic_Single(Dw_PicAddr[PicInf->PIC_ID][PicInf->Index]);


}

//显示单个图片 ID百位是当前页 个位和十位是当前页索引

void YDW_Pic_Draw(U16 ID)

{

YDW_PIC_INF Pic_Inf;

ClearPIC_Inf(&Pic_Inf);

Pic_Inf.PIC_ID = ID / 100;Pic_Inf.Index = ID % 100;

YDW_Pic_SingleId(&Pic_Inf);

}

//显示多个图片 ID百位是当前页 个位和十位是当前页索引

void YDW_Pic_DrawMul(U16 ID, U8 Count)

{

U8 i;

YDW_PIC_INF Pic_Inf;

ClearPIC_Inf(&Pic_Inf);

for (i = 0; i < Count; i++){

YDW_Pic_Draw(ID+i);

}

}

说明:图片可分为单个图标和合在一起的组合图标(拼接在一起的图标),单个图标很好理解就是一张小碎图,组合图标就是将同一类且相同尺寸的小图标组合拼接在一起形成的一个大图标,和单个图标用法是组合图标显示需要将地址偏移到想要的图标位置上,然后选择组合图片中需要显示的其中一个图标。

YDW_Pic_Draw调用后通过ID得到是第几个界面的第几个小图,然后获取到对应二维数组的图片信息,图片信息是地址,也可以定义为char *变为字符串作为路径。这样多张小图组合在一起,通过索引方便调用,保证其风格统一不散乱,为后续自动化编程铺路,多个图片的路径或地址可以通过软件直接由计算机计算打包出来。

PS:开始逐步展开介绍自动化编程,后面会更精彩,希望大家学有收获,欢迎评论转发加关注,留下您宝贵的意见。

相关推荐

RACI矩阵:项目管理中的角色与责任分配利器

作者:赵小燕RACI矩阵RACI矩阵是项目管理中的一种重要工具,旨在明确团队在各个任务中的角色和职责。通过将每个角色划分为负责人、最终责任人、咨询人和知情人四种类型,RACI矩阵确保每个人都清楚自己...

在弱矩阵组织中,如何做好项目管理工作?「慕哲制图」

慕哲出品必属精品系列在弱矩阵组织中,如何做好项目管理工作?【慕哲制图】-------------------------------慕哲制图系列0:一图掌握项目、项目集、项目组合、P2、商业分析和NP...

Scrum模式:每日站会(Daily Scrum)

定义每日站会(DailyScrum)是一个Scrum团队在进行Sprint期间的日常会议。这个会议的主要目的是为了应对Sprint计划中的不断变化,确保团队能够有效应对挑战并达成Sprint目标。为...

大家都在谈论的敏捷开发&amp;Scrum,到底是什么?

敏捷开发作为一种开发模式,近年来深受研发团队欢迎,与瀑布式开发相比,敏捷开发更轻量,灵活性更高,在当下多变环境下,越来越多团队选择敏捷开发。什么是敏捷?敏捷是一种在不确定和变化的环境中,通过创造和响应...

敏捷与Scrum是什么?(scrum敏捷开发是什么)

敏捷是一种思维模式和哲学,它描述了敏捷宣言中的一系列原则。另一方面,Scrum是一个框架,规定了实现这种思维方式的角色,事件,工件和规则/指南。换句话说,敏捷是思维方式,Scrum是规定实施敏捷哲学的...

敏捷项目管理与敏捷:Scrum流程图一览

敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示,以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例:这个流程图涵盖了Scrum框架的主要阶段和活动,其中包...

一张图掌握项目生命周期模型及Scrum框架

Mockito 的最佳实践(mock方法)

记得以前面试的时候,面试官问我,平常开发过程中自己会不会测试?我回答当然会呀,自己写的代码怎么不测呢。现在想想我好像误会他的意思了,他应该是想问我关于单元测试,集成测试以及背后相关的知识,然而当时说到...

EffectiveJava-5-枚举和注解(java枚举的作用与好处)

用enum代替int常量1.int枚举:引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。int枚举模式是类型不安全的,例如下面两组常量:性别和动物种...

Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!

Maven简介Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。Maven是一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。仔...

Java单元测试框架PowerMock学习(java单元测试是什么意思)

前言高德的技术大佬在谈论方法论时说到:“复杂的问题要简单化,简单的问题要深入化。”这句话让我感触颇深,这何尝不是一套编写代码的方法——把一个复杂逻辑拆分为许多简单逻辑,然后把每一个简单逻辑进行深入实现...

Spring框架基础知识-第六节内容(Spring高级话题)

Spring高级话题SpringAware基本概念Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的。但是在实际的项目中,你的Bean必须要意识到Spring容器...

Java单元测试浅析(JUnit+Mockito)

作者:京东物流秦彪1.什么是单元测试(1)单元测试环节:测试过程按照阶段划分分为:单元测试、集成测试、系统测试、验收测试等。相关含义如下:1)单元测试:针对计算机程序模块进行输出正确性检验工作...

揭秘Java代码背后的质检双侠:JUnit与Mockito!

你有没有发现,现在我们用的手机App、逛的网站,甚至各种智能设备,功能越来越复杂,但用起来却越来越顺畅,很少遇到那种崩溃、卡顿的闹心事儿?这背后可不是程序员一拍脑袋写完代码就完事儿了!他们需要一套严谨...

单元测试框架哪家强?Junit来帮忙!

大家好,在前面的文章中,给大家介绍了以注解和XML的方式分别实现IOC和依赖注入。并且我们定义了一个测试类,通过测试类来获取到了容器中的Bean,具体的测试类定义如下:@Testpublicvoid...

取消回复欢迎 发表评论: