zcu102_14_Zynq在Standalone下使用uGUI

uGUI的基本工作原理是将GUI组件的像素通过数据修改或者替换的方法叠加在原始图像数据上

uGUI的使用非常简单,将下载的ugui.h和ugui.c文件导入PS工程中即可以使用,通过官网手册和代码注释可以查看详细用法

下载

官网下载uGUI的最新版本

在网页的下方可以找到使用手册,源代码和示例程序
在这里插入图片描述

导入PS工程

可以通过复制粘贴的方式将下载的源码文件ugui.h和ugui.c文件导入PS工程

将ugui.h中的#include "system.h"改为#include "stdint.h"

定义像素点绘制函数

为了让uGUI正常工作,还应当在程序中自定义像素点绘制函数,并且在uGUI的初始化函数UG_Init()中通过参数指定绘制函数,否则uGUI不能工作

目前使用的像素点绘制函数如下:

//自定义像素点(x, y)的填充函数
static void pix_set(UG_S16 x, UG_S16 y, UG_COLOR c)
{
   
	//计算当前像素点在图像缓冲中的偏移
    //LINE_WIDTH为当前图像一行数据占用的字节数目
    //PIX_BYTES为当前图像中一个像素点占用的字节数目
	u32 pix_addr;
	pix_addr = y*LINE_WIDTH+x*PIX_BYTES;

	//取得配置颜色的RGB通道数值
	u8 r, g, b;
	r = (c >> 16) & 0xFF;
	g = (c >> 8) & 0xFF;
	b = c & 0xFF;

    //下方的透明度算法正确,但是uGUI底层接口调用时会在刷新GUI时出现闪烁
#ifdef GUI_ALPHA//如果有透明度要求
	//当前像素点值
	u8 ro, go, bo;
	ro = *(frame_ptr_ping+pix_addr);
	go = *(frame_ptr_ping+pix_addr+1);
	bo = *(frame_ptr_ping+pix_addr+2);

	//当前像素点值与GUI像素点值融合
	r = (u8)((float)r*GUI_ALPHA+(float)ro*(1.0F-GUI_ALPHA)+0.5F);
	g = (u8)((float)g*GUI_ALPHA+(float)go*(1.0F-GUI_ALPHA)+0.5F);
	b = 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值