OpenEdv-开源电子网

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

自荐字库改变大小后显示不全

[复制链接]

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
发表于 2017-1-22 09:20:35 | 显示全部楼层 |阅读模式

改变字体大小到24*12

改变字体大小到24*12
我生成新字库后,把字体大小放大了,可以显示出来的不全,哪位大神知道
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2017-1-22 10:07:41 | 显示全部楼层
十二翼 发表于 2017-1-22 09:50
您所指的字体显示程序是哪一部分,void LCD_ShowChar这个吗?

新建位图图像.jpg
回复 支持 反对

使用道具 举报

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
发表于 2017-1-22 09:34:54 | 显示全部楼层
估计是取模的问题
回复 支持 反对

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2017-1-22 09:40:18 | 显示全部楼层
应该是字体显示的程序的问题,看看程序是否支持你的字体大小
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
 楼主| 发表于 2017-1-22 09:45:53 | 显示全部楼层
11.JPG 这个生成的模,ABC显示全的,以下是显示程序
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{                                                            
    u8 temp,t1,t;
        u16 y0=y;
        u16 colortemp=POINT_COLOR;                                   
        //éèÖÃ′°¿ú                  
        num=num-' ';//μÃμ½Æ«òÆoóμÄÖμ
        if(!mode) //·Çμt¼ó·½ê½
        {
            for(t=0;t<size;t++)
            {   
                        if(size==12)temp=asc2_1206[num][t];  //μ÷ó&#195;1206×&#214;ì&#229;
                                else if(size==24)temp=asc2_2412[num][t];
                                else if(size==16)temp=asc2_1608[num][t];                 //μ÷ó&#195;1608×&#214;ì&#229;
                                else return;
                for(t1=0;t1<8;t1++)
                        {                            
                        if(temp&0x80)POINT_COLOR=colortemp;
                                else POINT_COLOR=BACK_COLOR;
                                LCD_DrawPoint(x,y);       
                                temp<<=1;
                                y++;
                                if(y>=lcddev.height){POINT_COLOR=colortemp;return;}//3&#172;&#199;&#248;óòá&#203;
                                if((y-y0)==size)
                                {
                                        y=y0;
                                        x++;
                                        if(x>=lcddev.width){POINT_COLOR=colortemp;return;}//3&#172;&#199;&#248;óòá&#203;
                                        break;
                                }
                        }           
            }   


就是24*12的不对
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
 楼主| 发表于 2017-1-22 09:50:06 | 显示全部楼层
2449164582 发表于 2017-1-22 09:40
应该是字体显示的程序的问题,看看程序是否支持你的字体大小

您所指的字体显示程序是哪一部分,void LCD_ShowChar这个吗?
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
 楼主| 发表于 2017-1-22 10:20:40 | 显示全部楼层

问题解决了,谢谢大神
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
 楼主| 发表于 2017-1-22 10:46:03 | 显示全部楼层

csize是计算字节数,但是如果我把size字节数之间赋予size好像还是不对,2412的csize字节数应该是36
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{                                                            
    u8 temp,t1,t;
        u16 y0=y;
        u16 colortemp=POINT_COLOR;
                //u8 csize=(size/8+((size%8)?1:0))*(size/2);
          
        num=num-' ';
        if(!mode)
        {
            for(t=0;t<size;t++)
            {   
                        if(size==12)temp=asc2_1206[num][t];  
                                else if(size==36)temp=asc2_2412[num][t];
                                else if(size==16)temp=asc2_1608[num][t];                 
                                else return;
                for(t1=0;t1<8;t1++)
                        {                            
                        if(temp&0x80)POINT_COLOR=colortemp;
                                else POINT_COLOR=BACK_COLOR;
                                LCD_DrawPoint(x,y);       
                                temp<<=1;
                                y++;
                                if(y>=lcddev.height){POINT_COLOR=colortemp;return;}//3&#172;&#199;&#248;óòá&#203;
                                if((y-y0)==size)
                                {
                                        y=y0;
                                        x++;
                                        if(x>=lcddev.width){POINT_COLOR=colortemp;return;}//3&#172;&#199;&#248;óòá&#203;
                                        break;
                                }
                        }           
            }   
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2017-1-20
在线时间
95 小时
 楼主| 发表于 2017-1-22 10:47:21 | 显示全部楼层

LCD_Clear(CYAN);
                POINT_COLOR=BLACK;          
                LCD_ShowString(30,40,210,24,36,"WarShip STM32 ");
                LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
                LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
回复 支持 反对

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2017-1-22 11:42:25 | 显示全部楼层
十二翼 发表于 2017-1-22 10:46
csize是计算字节数,但是如果我把size字节数之间赋予size好像还是不对,2412的csize字节数应该是36
void ...

因为字体的高度为24,及if((y-y0)==size) 这里size应该为24,而不是36
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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