touchgfx-滑动轮子

本文介绍在TouchGFX框架中如何自定义菜单元素,包括创建黑色背景的BOX、设置尺寸、添加文本图片及ICOCTXT,重点讲解了通过重写setNumber方法实现图标变化,以及在Screen1View.hpp中对scrollWheelUpdateItem函数的定制,展示了如何通过数学计算调整元素位置。
摘要由CSDN通过智能技术生成
https://touchgfx.zendesk.com/hc/en-us/articles/207282555

1--srreen1建立一个BOX 颜色全黑 铺满
2--切换到custom容器 改名字为 MenuElement--width (W) 390   height (H) to 70.
3--一次性加入文本图片
4--加入ICOC TXT
5--回到左边 可以加入自定义的控件了
6--暂时不要自定义控件 增加一个滚动 
X = 208, Y = 45 and H = 390 and change the name to "scrollWheel"
其中的模板选择自定义控件
7--加入2个图 半展示效果 此时结束开始code
感觉他就是框架已经完成了 你只是去填鸭!
你在MenuElement.hpp里面写的函数 
offset
setY
你不知道在哪里用的 
而setNumber你知道重写了

1#MenuElement.hpp

#include "BitmapDatabase.hpp"


	void setNumber(int no)
	{
		Unicode::itoa(no,textBuffer,TEXT_SIZE,10);
		switch (no % 7)
		{
		case 0:    icon.setBitmap(Bitmap(BITMAP_ICON00_ID)); break;
		case 1:    icon.setBitmap(Bitmap(BITMAP_ICON01_ID)); break;
		case 2:    icon.setBitmap(Bitmap(BITMAP_ICON02_ID)); break;
		case 3:    icon.setBitmap(Bitmap(BITMAP_ICON03_ID)); break;
		case 4:    icon.setBitmap(Bitmap(BITMAP_ICON04_ID)); break;
		case 5:    icon.setBitmap(Bitmap(BITMAP_ICON05_ID)); break;
		case 6:    icon.setBitmap(Bitmap(BITMAP_ICON06_ID)); break;
		}
	}
	
2#Screen1View.hpp
	virtual void scrollWheelUpdateItem(MenuElement& item, int16_t itemIndex)
	{
		item.setNumber(itemIndex);
	}	
	
这个函数其实类似__WEAK 被我重写了
原来是:
class Screen1ViewBase : public touchgfx::View<Screen1Presenter>
{
public:
    virtual void scrollWheelUpdateItem(MenuElement& item, int16_t itemIndex)
    {
        // Override and implement this function in Screen1
    }	
	
	
void Screen1ViewBase::updateItemCallbackHandler(DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex)
{
    if (items == &scrollWheelListItems)
    {
        Drawable* d = items->getDrawable(containerIndex);
        MenuElement* cc = (MenuElement*)d;
        scrollWheelUpdateItem(*cc, itemIndex);
    }
}
	
	
3#MenuElement.hpp

#include <math.h>
void offset(int16_t x)
	{
		icon.moveTo(30 + x, icon.getY());
		text.moveTo(80 + x, text.getY());

	}

	virtual void setY(int16_t y)
	{
		MenuElementBase::setY(y);
		const int circleRadius = 250;
		y = y + getHeight() / 2 - 390 / 2;

		float x_f = circleRadius - sqrtf((float)((circleRadius* circleRadius) - (y*y)));

		int16_t x = (int16_t)(x_f + 0.5f);

		offset(x);
	}

	void setNumber(int no)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值