硬汉嵌入式论坛

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

[emWin] 如何从emwin正确的读回像素的颜色?

[复制链接]

3

主题

19

回帖

3

积分

新手上路

积分
3
发表于 2015-1-29 18:16:57 | 显示全部楼层 |阅读模式
现在emwin中的颜色是24位,但是TFT是565的16位颜色值。
通过命令GUI_GetPixelIndex()回读的也是16位值。


我想回读一块矩形区域,然后又重绘上去。
通过命令GUI_Index2Color()将回读的16位转换为24位,
发现跟最开始的值就差别,这样就导致重绘的位置和原来就会有色差了。

总体来说,我就想实现:
从液晶上回读一块矩形区域,然后又从新画上去。
请问该如何实现?
回复

使用道具 举报

3

主题

19

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-1-29 18:50:58 | 显示全部楼层
请高手支招
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115679
QQ
发表于 2015-1-29 21:24:45 | 显示全部楼层
楼主有试过读取后直接再写回去吗,先试试这种方式,不要做24bit和16bit的颜色转换,如果不行,我再说一下另一种方法。
回复

使用道具 举报

3

主题

19

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-1-30 11:37:43 | 显示全部楼层

回 eric2013 的帖子

eric2013:
楼主有试过读取后直接再写回去吗,先试试这种方式,不要做24bit和16bit的颜色转换,如果不行,我再说一下另一种方法。
具体如下:

我现在给液晶整屏写入颜色:#define GUI_BROWN         0x002A2AA5
然后通过函数:GUI_GetPixelIndex()读出来的值为 0xa145 然后直接画框,
接着我将读出来的值通过函数:GUI_Index2Color();转换为24位,最终值为:0x2928a5
再拿这个值来画框。

具体效果如下:
IMG_20150130_113402.jpg
回复

使用道具 举报

3

主题

19

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-1-30 11:39:40 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主有试过读取后直接再写回去吗,先试试这种方式,不要做24bit和16bit的颜色转换,如果不行,我再说一下另一种方法。(2015-01-29 21:24)嬀/color]
画的第二个框根本用肉眼都看不出来了,虽然最终的值跟理论写入的值有偏差
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115679
QQ
发表于 2015-1-30 12:10:25 | 显示全部楼层

回 kc_cec 的帖子

kc_cec:画的第二个框根本用肉眼都看不出来了,虽然最终的值跟理论写入的值有偏差 (2015-01-30 11:39) 
你上面的截图是不是通过GUI_GetPixelIndex()读出来的值为 0xa145 然后直接画框的效果。
回复

使用道具 举报

3

主题

19

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2015-1-30 13:20:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:你上面的截图是不是通过GUI_GetPixelIndex()读出来的值为 0xa145 然后直接画框的效果。(2015-01-30 12:10)嬀/color]
是的 第一个框就是0xa145的效果
我试过其他好几种颜色,
总体来说读出来经过转换后虽然有偏差,但是从新画在屏幕上后又会转为16位,所以对于16位来说应该偏差很小。

看来我开始的忧虑是多余的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-11 19:25 , Processed in 0.233076 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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