硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5545|回复: 4
收起左侧

[emWin] emwin鼠标箭头显示两种颜色

[复制链接]

2

主题

14

回帖

20

积分

新手上路

积分
20
发表于 2021-4-8 14:35:51 | 显示全部楼层 |阅读模式
各位路过的兄弟姐妹们,我想问下为什么我的emwin鼠标箭头显示的两种颜色啊!!一直没搞出来

JATXD3S%}(ZLWA~(8S@LI%W.jpg
回复

使用道具 举报

3

主题

423

回帖

432

积分

高级会员

积分
432
发表于 2021-4-8 22:08:38 | 显示全部楼层
应该是LCD读点函数有错
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-4-9 08:14:04 | 显示全部楼层
鼠标拖影问题,一般是读像素接口函数有问题导致的。
回复

使用道具 举报

2

主题

14

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2021-4-9 14:16:00 | 显示全部楼层
eric2013 发表于 2021-4-9 08:14
鼠标拖影问题,一般是读像素接口函数有问题导致的。

现在两个问题     第一个就是之前显示鼠标指针和位图都是一半对一半有问题,我把GUIDRV_Template里面的/**********************************************************************
*       Draw Bitmap 16 BPP, not optimized
*/
static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const GUI_UNI_PTR * p, int xsize) {
#if emWin_Optimize
        //emWin_DrawHColorLine(x, y, xsize, (uint16_t *)p);

        //ILI9488_DrawHColorLine(x, y, xsize, (uint16_t *)p);取消       
      for (;xsize > 0; xsize--, x++, p++)
        {
                _SetPixelIndex(pDevice, x, y, *p);
        }用打点替换
#else
        for (;xsize > 0; xsize--, x++, p++)
        {
                _SetPixelIndex(pDevice, x, y, *p);
        }
#endif
}

替换就好了但是打点相对较慢(spi通讯)

第二个问题就是读点这个
uint16_t ILI9488_GetPixel(uint16_t _usX, uint16_t _usY)
{
        uint16_t R = 0, G = 0, B = 0 ;
        ILI9488_SetCursor(_usX, _usY);        /* éèÖÃ1a±êλÖà */
        ILI9488_WriteCmd(0x2E);
        SPI1->CR1|=1<<11;//éè&#214;&#195;SPI16&#206;&#187;′&#171;ê&#228;&#196;£ê&#189;
        SPI_Cmd(SPI1, ENABLE);//ê1&#196;üSPI
       /*使能spi16位传输*/
        LCD_CS_Clr();
        LCD_DC_Set();
        R = bsp_spiRead16();        /* μú1&#184;&#246;&#209;&#198;&#182;á£&#172;&#182;a&#198;ú */
        LCD_CS_Clr();
        LCD_DC_Set();
        bsp_DelayUS(2);
        R = bsp_spiRead16();
        LCD_CS_Clr();
        LCD_DC_Set();
        B = bsp_spiRead16();
        LCD_CS_Clr();
        LCD_DC_Set();
        G = bsp_spiRead16();
        LCD_CS_Set();
       /*使能spi8位传输*/
          SPI1->CR1=~SPI1->CR1;
                SPI1->CR1|=1<<11;
                SPI1->CR1=~SPI1->CR1;//éè&#214;&#195;SPI8&#206;&#187;′&#171;ê&#228;&#196;£ê&#189;
                SPI_Cmd(SPI1, ENABLE);//ê1&#196;üSPI
                ILI9488_WriteCmd(0x2C);
    return (((R >> 11) << 11) | ((G >> 10 ) << 5) | (B >> 11));
}

这样颜色读出来有点不太对还是有重影,比如原本的蓝色和指针走过的地方显示的蓝色不是一个,黄色又是一样的

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-4-10 08:43:12 | 显示全部楼层
BeerCloud 发表于 2021-4-9 14:16
现在两个问题     第一个就是之前显示鼠标指针和位图都是一半对一半有问题,我把GUIDRV_Template里面的/* ...

参考我们的吧,论坛置顶帖V5标准库网盘,任意下载个emWin例子,里面有个ili9488的驱动,读点是正常的。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-20 14:47 , Processed in 0.329605 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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