opengl/cairo做类似QQ联系人效果|环球快看
2023-05-26 11:49:34来源:哔哩哔哩

主要代码:

一、用cairo的接口绘制一个图形显示的范围


(资料图片仅供参考)

```

cairo_rectangle(cr, mask.x, mask.y, mask.w, mask.h);

cairo_clip(cr);

cairo_new_path(cr);

```

二、新建对像

将各个栏的效果包装成Cell类,如TitleCell、TitleBtnCell、imageCell类。

然后通过新建一个ListView,调用addcell类添加cell,形成QQ联系人栏目。

如下代码:

```

//  -------------------------------------

//  |       |                         |

//  | icon  |   Title                 |

//  |       |                         |

//  -------------------------------------

class IconTitleCell: public TitleCell  {

public:

IconTitleCell(ListView* p) { pListView = p; }

virtual ~IconTitleCell() {*** }

void setBgImage(std::string image);

void setTitleTextSize(int size) { m_titleFontSize = size; }

void setTitleTextColor(Colorf color) { m_titleColor = color; }

virtual void draw(***);

private:

virtual void _drawBg(***); //surface

virtual void _drawText(***); //surface

```

```

//  -------------------------------------

//  |       |   Title        |          |

//  | icon  |                |  button  |

//  |       |   subTitle     |          |

//  -------------------------------------

class TitleBtnCell : public TitleCell {

public:

TitleBtnCell(ListView* p);

void setSubTitleTextSize(int size) { m_subTitleFontSize = size; }

void setSubTitleTextColor(tzu::Colorf color) { m_subTitleColor = color; }

virtual void draw(***);

private:

virtual void _drawTexts(***);

virtual void _drawIcon(***);

virtual void _drawButton(***);

```

三、调用touch事件

通过TouchEvent事件,移动所有cell对齐的坐标。形成上下滑动效果。

四、调用cairo合成的surface在opengl中显示

标签:

最后一页
【环球快播报】泰恩康05月25日被深股通减持13.15万股

精彩推荐

资讯News

  • 聚焦Policy