OpenEdv-开源电子网

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

STemWin截屏成功,需要的可以参考

[复制链接]

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-1-10 12:28:28 | 显示全部楼层 |阅读模式
本帖最后由 八度空间 于 2016-1-10 12:32 编辑

看emWin手册,看到这API
BMP截屏API.png
可以实现截屏了,赶紧开工,编写代码(工程来自这里http://www.openedv.com/thread-52354-1-1.html),测试,呵呵,小有成就
[mw_shl_code=applescript,true]/**
  *****************************************************************************
  * @Name   : emWin向文件写入一个字节数据
  *
  * @Brief  : none
  *
  * @Input  : Data: 要写入的数据
  *           *p:   路径
  *
  * @Output : none
  *
  * @Return : none
  *****************************************************************************
**/
static void _WriteByte2File(U8 Data, void * p)
{
        UINT nWrite = 0;
        
        f_write((FIL *)p, (TCHAR *)&Data, 1, &nWrite);
}

/**
  *****************************************************************************
  * @Name   : emWin得到一幅图片并写入存储器
  *
  * @Brief  : none
  *
  * @Input  : *FileName: 文件名称
  *           (x0, y0):  起点坐标
  *           xSize:     图片X方向大小
  *           ySize:     图片Y方向大小
  *
  * @Output : none
  *
  * @Return : none
  *****************************************************************************
**/
void emWin_CreateBMPPicture(uint8_t * FileName, int x0, int y0, int xSize, int ySize)
{
        static FIL hFile;
        GUI_COLOR forecolor, backcolor;
        
        //
        //保险起见,先保存一下
        //
        forecolor = GUI_GetColor();  //获取前景颜色
        backcolor = GUI_GetBkColor();  //获取背景颜色
        //
        //创建一个文件
        //
        f_open(&hFile, (const TCHAR *)FileName, FA_READ | FA_WRITE | FA_CREATE_ALWAYS);
        GUI_BMP_SerializeEx(_WriteByte2File, x0, y0, xSize, ySize, &hFile);
        f_close(&hFile);  //写完,关闭文件
        
        GUI_SetColor(forecolor);  //恢复前景颜色
        GUI_SetBkColor(backcolor);  //恢复背景颜色
}[/mw_shl_code]
实现上面两个函数,添加FatFs代码文件(直接用原子哥的),在main函数里面添加代码,通过按键触发截屏,按键任务代码如下
[mw_shl_code=applescript,true]/**
  *****************************************************************************
  * @Name   : OS创建按键任务
  *
  * @Brief  : none
  *
  * @Input  : none
  *
  * @Output : none
  *
  * @Return : none
  *****************************************************************************
**/
void Key_Task(void * pdata)
{
        u8 i = 0;
        u8 buf[100];
        
        pdata = pdata;
        
        while (1)
        {
                OSTimeDlyHMSM(0, 0, 0, 20);  //延时500ms
                if (KEY0 == 0)
                {
                        OSSchedLock();  //调度器上锁
                        LED1 = 0;  //亮灯表示正在截屏
                        sprintf ((char *)buf, "0:/SCREENSHORT_%d.bmp", i);
                        emWin_CreateBMPPicture(buf, 0, 0, 800, 480);  //截屏
                        LED1 = 1;  //完成了,灭灯
                        i++;
                        OSSchedUnlock();  //调度器解锁
                }
               
        };
}[/mw_shl_code]
下载板子测试,全部的demo都开了,效果还可以,下面是样张
SCREENSHORT_001.jpg
SCREENSHORT_002.jpg
SCREENSHORT_003.jpg
SCREENSHORT_004.jpg
SCREENSHORT_005.jpg
SCREENSHORT_006.jpg
SCREENSHORT_007.jpg
SCREENSHORT_008.jpg
SCREENSHORT_009.jpg
SCREENSHORT_010.jpg
SCREENSHORT_011.jpg
SCREENSHORT_012.jpg
SCREENSHORT_013.jpg
SCREENSHORT_014.jpg
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-1-10 13:03:04 | 显示全部楼层
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-1-10 16:09:03 | 显示全部楼层
龙之谷 发表于 2016-1-10 13:03
揍是那么的强悍.....

一般般,呵呵,学些学习
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2016-5-3 17:57:10 | 显示全部楼层
八度空间 发表于 2016-1-10 16:09
一般般,呵呵,学些学习

你从哪份资料学起的?我最近也打算学STEMWIN
合肥-文盲
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-5-3 20:57:59 | 显示全部楼层
合肥-文盲 发表于 2016-5-3 17:57
你从哪份资料学起的?我最近也打算学STEMWIN

我乱搞的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2016-5-4 08:22:34 | 显示全部楼层

谦虚了   分享分享经验
合肥-文盲
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-7-25
在线时间
0 小时
发表于 2019-7-25 18:36:57 | 显示全部楼层
老哥,你截屏一个需要多长时间啊?我截屏需要10秒钟左右,太慢了
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-8-3 16:35:09 | 显示全部楼层
leeyoung 发表于 2019-7-25 18:36
老哥,你截屏一个需要多长时间啊?我截屏需要10秒钟左右,太慢了

没辣么慢吧,除非你写入存储设备的速度比较慢,我是写入SD卡的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-11-9
在线时间
43 小时
发表于 2020-3-19 19:43:16 | 显示全部楼层
老哥,请问sd卡读图片做背景怎么做,就是在wm_paint里bmp绘制或者有没有其他办法,f103的
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-3-19 23:03:38 | 显示全部楼层
ZHY98 发表于 2020-3-19 19:43
老哥,请问sd卡读图片做背景怎么做,就是在wm_paint里bmp绘制或者有没有其他办法,f103的

记得emwin有个刷背景图片的方法,具体可以看下例程
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 09:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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