硬汉嵌入式论坛

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

[emWin] STEMWIN实现倒影效果

  [复制链接]

5

主题

109

回帖

124

积分

初级会员

积分
124
发表于 2016-6-4 10:14:36 | 显示全部楼层 |阅读模式
版主和群里的高人请指教一下,stemwin如何能实现图中这样的数据倒影效果?或者有什么思路?谢谢
daoying.PNG
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-6-4 17:44:18 | 显示全部楼层
eric2013老师,我这个问题有可能实现么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2016-6-5 12:00:03 | 显示全部楼层
这个还真是有点难度,emWin没有这种有的功能,只能自己实现了,实现一个完整的倒立是没问题的,但是表现为影子的效果就有些难度了。
回复

使用道具 举报

0

主题

3

回帖

0

积分

新手上路

积分
0
发表于 2016-6-5 14:25:16 | 显示全部楼层
实现一个完整的倒立后进行做透明度应该可以
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-6-5 16:32:00 | 显示全部楼层
我也在这么想,实在不好弄我打算用2D画渐变做个模糊的色块得了,如果这样的倒影可能需要alpha混合,我现在没有用到窗口之类的,怕内存不够用
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-6-5 16:54:01 | 显示全部楼层

回 inthesun 的帖子

inthesun:实现一个完整的倒立后进行做透明度应该可以 (2016-06-05 14:25) 
如果做透明的话,因为是渐变的,那感觉要一条线一条线的做渐变才能达到这个效果
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-6-5 16:56:01 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个还真是有点难度,emWin没有这种有的功能,只能自己实现了,实现一个完整的倒立是没问题的,但是表现为影子的效果就有些难度了。 (2016-06-05 12:00) 
老大,stemwin有不有将字体倒转显示的功能的
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-6-5 17:31:02 | 显示全部楼层

回 inthesun 的帖子

inthesun:
实现一个完整的倒立后进行做透明度应该可以
倒影可以在提取字模时加入进去,但alpha混合就不好了,因为渐变的过程需要在画线时就先设置alpha值,也就是在显示字符的倒影部分每画一条线就需要设置alpha值,这样除非只有用开源的ucgui改了
alpha.PNG
回复

使用道具 举报

10

主题

51

回帖

10

积分

初级会员

积分
10
发表于 2016-6-7 14:22:34 | 显示全部楼层
可以这样试一下,将数字写在一个MEMDEV内,然后将这块区域旋转180度,再aplha混合上一个从上到下从由透明到黑色的色块。
回复

使用道具 举报

10

主题

51

回帖

10

积分

初级会员

积分
10
发表于 2016-6-7 16:11:42 | 显示全部楼层
做出了倒影,但是渐变效果还没实现
回复

使用道具 举报

0

主题

3

回帖

0

积分

新手上路

积分
0
发表于 2016-6-8 12:55:11 | 显示全部楼层

回 hejiang177 的帖子

hejiang177:倒影可以在提取字模时加入进去,但alpha混合就不好了,因为渐变的过程需要在画线时就先设置alpha值,也就是在显示字符的倒影部分每画一条线就需要设置alpha值,这样除非只有用开源的ucgui改了
 (2016-06-05 17:31) 
实现倒影后把每一行数据与黑色背景色进行混合,改变每一行的混合系数,应该可以
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2016-9-20 22:10:33 | 显示全部楼层

回 inthesun 的帖子

inthesun:

实现倒影后把每一行数据与黑色背景色进行混合,改变每一行的混合系数,应该可以
后来客户也接受这样了,没有搞渐变的效果了,看看有时间研究一下了只有
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2016-11-21 17:45:30 | 显示全部楼层
旋转180显示的与镜像显示的不一样,这个方法不行
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2016-11-21 17:47:21 | 显示全部楼层
我初步实现渐变,但是不是镜像,有没有什么办法?
新建位图图像.jpg
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2016-11-21 18:51:35 | 显示全部楼层
这是我倒转180度的文字显示,显然不正确,根本不是镜像显示,有木有什么办法????
dz.jpg
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2017-4-11 17:52:19 | 显示全部楼层

回 ssis909 的帖子

ssis909:这是我倒转180度的文字显示,显然不正确,根本不是镜像显示,有木有什么办法????

 (2016-11-21 18:51) 
[s:149] [s:149] 客人接受无镜象的了,后来没有再搞了
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2017-4-11 17:53:01 | 显示全部楼层

回 ssis909 的帖子

ssis909:我初步实现渐变,但是不是镜像,有没有什么办法?


 (2016-11-21 17:47) 
你这个不错哟,是用alpha混合来做的么
回复

使用道具 举报

8

主题

42

回帖

71

积分

初级会员

积分
71
发表于 2017-4-12 15:53:20 | 显示全部楼层
其实可以先花在memdev中,然后获取memdev指针,直接对显存进行镜像操作,再写到屏幕上去,就完成了
回复

使用道具 举报

0

主题

33

回帖

33

积分

新手上路

积分
33
发表于 2017-4-12 17:57:09 | 显示全部楼层
8AJD~KXF`Y{Q$%RP)PN6ASP.png

上下颠倒,每一行alpha混合,不过不是用EMWIN
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2017-4-12 22:49:25 | 显示全部楼层
这个效果,对于PS来讲,应该是个极简单的功能,但是对于EMWIN这个小家伙儿来讲。。。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-4-13 08:41:58 | 显示全部楼层

回 taobaofarmer 的帖子

taobaofarmer:这个效果,对于PS来讲,应该是个极简单的功能,但是对于EMWIN这个小家伙儿来讲。。。 (2017-04-12 22:49)
正解!
想用嵌入式那点绘图能力做特效的都是需求分析不到位。
试问,如果需求变化了,要另一种效果了,是不是又要伤脑筋去想怎么实现了?
用图像去做一劳永逸。
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2017-4-13 11:28:11 | 显示全部楼层

回 szjx1212 的帖子

szjx1212:

上下颠倒,每一行alpha混合,不过不是用EMWIN (2017-04-12 17:57) 
那是用的什么GUI呢?[s:149][s:149][s:149][s:149]
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2017-4-13 11:29:27 | 显示全部楼层

回 szjx1212 的帖子

szjx1212:

上下颠倒,每一行alpha混合,不过不是用EMWIN (2017-04-12 17:57) 
感觉EMWIN这样也可以,可以读取每行的数据,再alpha混合
回复

使用道具 举报

0

主题

33

回帖

33

积分

新手上路

积分
33
发表于 2017-4-13 12:55:19 | 显示全部楼层

回 taobaofarmer 的帖子

taobaofarmer:
这个效果,对于PS来讲,应该是个极简单的功能,但是对于EMWIN这个小家伙儿来讲。。。
6DS_K2`{1W[}RQ055O%K)(7.png     就几个数字用PS很简单,但是要所有的文字都实现还是不行。
回复

使用道具 举报

0

主题

33

回帖

33

积分

新手上路

积分
33
发表于 2017-4-13 13:01:15 | 显示全部楼层

回 hejiang177 的帖子

hejiang177:感觉EMWIN这样也可以,可以读取每行的数据,再alpha混合 (2017-04-13 11:29) 
这个跟EMWIN不一样,我的文字输出都是A8格式的,直接把文字输出到内存,再每一行alpha混合
回复

使用道具 举报

9

主题

112

回帖

144

积分

初级会员

积分
144
发表于 2017-4-26 16:44:59 | 显示全部楼层
试了下,还是可以实现的。旋转用memdev,渐变用alpha色 + GUI_DrawGradientV即可
倒影渐变.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2017-4-27 01:16:21 | 显示全部楼层

回 yanchao7788 的帖子

yanchao7788:试了下,还是可以实现的。旋转用memdev,渐变用alpha色 + GUI_DrawGradientV即可

 (2017-04-26 16:44) 
[s:151]谢谢提供的效果
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2017-4-27 20:06:56 | 显示全部楼层

回 yanchao7788 的帖子

yanchao7788:试了下,还是可以实现的。旋转用memdev,渐变用alpha色 + GUI_DrawGradientV即可

 (2017-04-26 16:44) 
你好,可以提供memdev镜像旋转的代码吗?我只能实现旋转180度,而不是上下镜像显示
回复

使用道具 举报

9

主题

112

回帖

144

积分

初级会员

积分
144
发表于 2017-5-3 15:21:37 | 显示全部楼层

回 ssis909 的帖子

ssis909:你好,可以提供memdev镜像旋转的代码吗?我只能实现旋转180度,而不是上下镜像显示 (2017-04-27 20:06) 
    // 正影
    GUI_SetBkColor(GUI_TRANSPARENT);
    GUI_Clear();
    GUI_SetTextMode(GUI_TM_TRANS);
    GUI_GotoXY(2, 2);
    GUI_SetColor(GUI_BLACK);
    GUI_DispString("12:45");
    GUI_GotoXY(0, 0);
    GUI_SetColor(GUI_BLUE);
    GUI_DispString("12:45");

    // 画倒影
    GUI_MEMDEV_Select(hMem1);
    GUI_SetTextMode(GUI_TM_TRANS);
    GUI_DispStringAt("12:45", 0, 0);
    GUI_MEMDEV_Select(hMem2);
    GUI_SetBkColor(GUI_WHITE);
    //GUI_Clear();
    GUI_MEMDEV_WriteExAt(hMem1, 0, 0, 1000, -1000, 200);
    GUI_MEMDEV_CopyToLCDAt(hMem2, 0, 75);
回复

使用道具 举报

4

主题

41

回帖

53

积分

初级会员

积分
53
发表于 2017-5-3 16:36:21 | 显示全部楼层

回 yanchao7788 的帖子

yanchao7788:    // 正影
    GUI_SetBkColor(GUI_TRANSPARENT);
    GUI_Clear();
    GUI_SetTextMode(GUI_TM_TRANS);
....... (2017-05-03 15:21) 
做的不错,谢谢分享
回复

使用道具 举报

11

主题

122

回帖

160

积分

初级会员

积分
160
发表于 2017-5-4 12:56:39 | 显示全部楼层

回 yanchao7788 的帖子

yanchao7788:    // 正影
    GUI_SetBkColor(GUI_TRANSPARENT);
    GUI_Clear();
    GUI_SetTextMode(GUI_TM_TRANS);
....... (2017-05-03 15:21) 
能不能提供完整的代码学习下[s:142]
回复

使用道具 举报

11

主题

122

回帖

160

积分

初级会员

积分
160
发表于 2017-5-4 22:04:56 | 显示全部楼层
demo.png

已经解决。思路是先绘出文字,然后用alpha混合,保持当前绘制颜色和背景颜色一致。
void MainTask(void) {
    int i;
    GUI_MEMDEV_Handle hMem1, hMem2;
    GUI_Init();
    GUI_EnableAlpha(1);

    hMem1 = GUI_MEMDEV_Create(0, 0, 80, 30);
    hMem2 = GUI_MEMDEV_Create(0, 0, 80, 30);

    GUI_SetBkColor(GUI_BLACK);
    GUI_Clear();
    GUI_SetFont(&GUI_Font32B_ASCII);
    GUI_SetTextMode(GUI_TM_TRANS);
    GUI_GotoXY(0, 0);
    GUI_SetColor(GUI_WHITE);
    GUI_DispString("Text");

    GUI_MEMDEV_Select(hMem1);
    GUI_SetFont(&GUI_Font32B_ASCII);
    GUI_SetTextMode(GUI_TM_TRANS);
    GUI_SetColor(GUI_WHITE);
    GUI_DispStringAt("Text", 0, 0);
    for (i = 0; i < 30; i++){
        GUI_SetAlpha(15 + 8*i);
        GUI_SetColor(GUI_BLACK);
        GUI_DrawLine(0,i,80,i+1);
        GUI_SetAlpha(0);
    }

    GUI_MEMDEV_Select(hMem2);
    GUI_MEMDEV_WriteExAt(hMem1, 0, 0, 1000, -1000, 200);
    GUI_MEMDEV_CopyToLCDAt(hMem2, 0, 30);

    while (1) {
        GUI_Delay(100);
    }
}
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2017-5-8 09:52:09 | 显示全部楼层

回 有梦为马 的帖子

有梦为马:

已经解决。思路是先绘出文字,然后用alpha混合,保持当前绘制颜色和背景颜色一致。
void MainTask(void) {
    int i;
....... (2017-05-04 22:04)
感谢,非常不错,实现效果了,但是如果文字有背景图片的话,倒影是无法显示图片的,不知有什么办法
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2017-5-8 09:53:05 | 显示全部楼层

回 yanchao7788 的帖子

yanchao7788:    // 正影
    GUI_SetBkColor(GUI_TRANSPARENT);
    GUI_Clear();
    GUI_SetTextMode(GUI_TM_TRANS);
....... (2017-05-03 15:21)
非常感谢,不错,实现效果了,但是如果文字有背景图片的话,倒影是无法正常显示图片的,不知有什么办法
回复

使用道具 举报

9

主题

112

回帖

144

积分

初级会员

积分
144
发表于 2017-5-8 18:03:06 | 显示全部楼层

回 ssis909 的帖子

ssis909:非常感谢,不错,实现效果了,但是如果文字有背景图片的话,倒影是无法正常显示图片的,不知有什么办法

 (2017-05-08 09:53) 
方法是一样的吧,只是在写文字的时候多一步画背景的动作
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
发表于 2017-12-10 18:57:58 | 显示全部楼层
收藏了,学习下
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2018-1-29 14:35:31 | 显示全部楼层
yanchao7788 发表于 2017-4-26 16:44
试了下,还是可以实现的。旋转用memdev,渐变用alpha色 + GUI_DrawGradientV即可

哇,兄弟历害,谢谢
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2018-1-29 14:35:31 | 显示全部楼层
yanchao7788 发表于 2017-4-26 16:44
试了下,还是可以实现的。旋转用memdev,渐变用alpha色 + GUI_DrawGradientV即可

哇,兄弟历害,谢谢
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2018-1-29 14:36:52 | 显示全部楼层
有梦为马 发表于 2017-5-4 22:04
已经解决。思路是先绘出文字,然后用alpha混合,保持当前绘制颜色和背景颜色一致。
void MainTask(void)  ...

你这个也很好哈,谢谢兄弟
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-8-22 11:29:17 | 显示全部楼层
本帖最后由 廷润 于 2019-8-22 11:38 编辑

跟着思路走一遍,再一遍还是可以发现很多
QQ图片20190822112816.png
Releasing your creativity
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 21:03 , Processed in 0.511604 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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