OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2607|回复: 6

求助,关于菜单显示图片的问题

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-1-23
在线时间
2 小时
发表于 2020-3-4 20:07:43 | 显示全部楼层 |阅读模式
7金钱
1.__M_PAGE(MODE3,"3333ye",&MODE3,                       //建立二级菜单
{
SOLGUI_Widget_Picture(5,5,110,55,zimo_1,100,50,FRM);
});


2.错误:..\MKFILE\menu.c(55): error:  #167: argument of type "const u8 (*)[16]" is incompatible with parameter of type "const u8 *"


3.我数组是const u8 类型符合函数定义的要求,然后以数组名作为参数按理可以呀,把const去掉也会这样,OLED显示图片的有时候也会出现这样的错误,求解。拜托各位帮帮忙
4.void SOLGUI_Widget_Picture(u32 x0,u32 y0,u32 xsize,u32 ysize,u8 *pic,u32 x_len,u32 y_len,u8 mode) //带缩小适配的图片控件
{
float fw=0,fh=0;
u16 temp_x=0,temp_y=0;
u16 y_i=0,x_i=0;
u32 y0_t=y0+ysize; //将原点改为左下角(原本原点为右上角)
u8 m1=0;
//--------【当前状态】
if(bit_istrue(SOLGUI_CSR,bit(1))) return; //全屏占用
m1=bit_isfalse(mode,bit(7));    //是否反白
//------------【图片直出绘制】
if((xsize>=x_len)&&(ysize>=y_len))
  SOLGUI_Pictrue(x0,y0,pic,x_len,y_len,m1);
else {
//------------【图片适配大小绘制】
  fw=(float)x_len/xsize; fh=(float)y_len/ysize; //缩小比
  for(x_i=0;x_i<xsize;x_i++)
  {
   temp_x=(u16)(fw*x_i);   //临近插值缩放算法
   for(y_i=0;y_i<ysize;y_i++)
   {
    temp_y=(u16)(fh*y_i);   
       if(SOLGUI_GetPixel(temp_x,temp_y,pic,x_len,y_len)) SOLGUI_DrawPoint(x0+x_i,y0_t-y_i,m1);
       else SOLGUI_DrawPoint(x0+x_i,y0_t-y_i,!m1);
   }
  }
};
//-----【边框绘制】
if(bit_istrue(mode,bit(6))) SOLGUI_GBasic_Rectangle(x0,y0,x0+xsize-1,y0+ysize-1,ACTUAL);
}



const u8 zimo_1[][16]= {  
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//后面都省略了。。。。

};


最佳答案

查看完整内容[请看2#楼]

一维数组可以直接给你这个函数做参数,但是你定义的是二维数组!!自己去掉1维先
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-3-4 20:07:44 | 显示全部楼层
一维数组可以直接给你这个函数做参数,但是你定义的是二维数组!!自己去掉1维先
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2020-3-4 22:05:48 | 显示全部楼层
语法上来说是可以的,看下能仿真找出原因不
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-2-21
在线时间
38 小时
发表于 2020-3-5 10:08:23 | 显示全部楼层
SOLGUI_Widget_Picture(5,5,110,55,zimo_1,100,50,FRM);中的zimo_1应该改成&zimo_1[0][0]或者zimo_1[0]吧,
或者把函数参数u8 (*)改为u8 (*)[16] 变为数组指针?不过这样的话后面的调用函数好像也要改了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-1-23
在线时间
2 小时
 楼主| 发表于 2020-3-5 17:12:46 | 显示全部楼层
peng1554 发表于 2020-3-4 22:05
语法上来说是可以的,看下能仿真找出原因不

怎么仿真呀?我编译出现错误
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-1-23
在线时间
2 小时
 楼主| 发表于 2020-3-5 17:13:36 | 显示全部楼层
传说缥缈 发表于 2020-3-5 10:08
SOLGUI_Widget_Picture(5,5,110,55,zimo_1,100,50,FRM);中的zimo_1应该改成&zimo_1[0][0]或者zimo_1[0]吧, ...

请问为什么不能把数组名作为参数呢
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-1-23
在线时间
2 小时
 楼主| 发表于 2020-3-6 08:26:13 | 显示全部楼层
gwzyou 发表于 2020-3-5 17:12
怎么仿真呀?我编译出现错误

谢谢,可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 09:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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