当前位置: 首页 > news >正文

wordpress 文档模板下载上海谷歌seo公司

wordpress 文档模板下载,上海谷歌seo公司,深圳中建南方建设集团网站,互联网保险的优势概述 Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见,在Godot中可以通过改进PanelContainer来或者自定…

概述

Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。

圆角容器

圆角元素在现代的扁平UI设计中非常常见,在Godot中可以通过改进PanelContainer来或者自定义容器来实现圆角面板效果。

  • 我初期想基于PanelContainer写一个容器类,但是发现比较绕
  • 于是还是直接基于Container类型写了一个自定义容器类
  • 初期我偏向于直接用绘图函数绘制StyleBox
  • 但是当遇到渐变和图片时,绘制StyleBox的方式将无法获得圆角
  • 所以最后不得不采用绘图函数draw_colored_polygon,并且自己计算圆角矩形顶点集合以及计算每个点的UV坐标,从而实现一种类似矢量遮罩的效果。

最终实现效果

基础效果

RadiusPanelContainer

容器的自定义参数如下:

基本参数

实现如下功能:

  • 快速获得带圆角的纯色、图片背景(包括渐变等)的容器
  • 可以设定统一的描边颜色、宽度,以及圆角大小
  • 可以设定子元素的内边距
  • 可以设定容器的不透明度

注意: 需要搭配常见容器使用,第一个子元素也是唯一被正确显示的第一级子元素,需要是一个容器类型。


第一级第一个子元素需要为容器类型

完整代码

# ==========================================================
# RadiusPanelContainer
# 类型:自定义容器
# 概述:现代化UI系列,实现基础的圆角面板元素
# 巽星石
# 创建时间20251313:45:32
# 最后修改时间:20251317:54:39
# ==========================================================
@tool
class_name  RadiusPanelContainer extends Container# =============================== 参数 ===============================@export var padding:=10: ## 内边距set(val):padding = valqueue_redraw()@export_range(0.0,1.0,0.1) var opacity=1.0: ## 透明度set(val):opacity = valif val:self_modulate = Color(1.0,1.0,1.0,val)queue_redraw()@export_group("background")
@export var bg_color:=Color.WHITE: ## 背景颜色set(val):bg_color = valqueue_redraw()@export var bg_texture:Texture2D: ## 背景图片set(val):bg_texture = valqueue_redraw()@export_group("border")
@export var border_color:=Color.WHITE: ## 边框颜色set(val):border_color = valqueue_redraw()@export var border_radius:=5: ## 圆角半径set(val):border_radius = valqueue_redraw()@export var border_width:=0:## 边线宽度set(val):border_width = valqueue_redraw()# =============================== 虚函数 ===============================
func _init() -> void:clip_contents = truefunc _draw() -> void:var rect = get_rect() * get_transform()var pots = round_rect(rect,border_radius,border_width/2.0)# 绘制背景if bg_texture:var uvs:PackedVector2Arrayfor pot in pots: # 计算UV坐标uvs.append(pot/rect.size)# 绘制圆角矩形draw_colored_polygon(pots,bg_color,uvs,bg_texture)else:draw_polygon(pots,[bg_color])# 绘制边线draw_polyline(pots,border_color,border_width)# 重排子元素queue_sort()func _notification(what: int) -> void:var rect = get_rect() * get_transform()rect.position += Vector2.ONE * paddingrect.size -= Vector2.ONE * padding * 2match what:NOTIFICATION_SORT_CHILDREN:if get_child_count()>0:fit_child_in_rect(get_children()[0],rect)# =============================== 自定义函数 ===============================
# 求圆弧点集
func arc(c:Vector2,r:float,start_angle:float,end_angle:float,steps:=10) -> PackedVector2Array:var arr:PackedVector2Arrayvar v1 = Vector2.RIGHT * rvar ang = deg_to_rad(end_angle - start_angle)/float(steps)for i in range(steps+1):arr.append(v1.rotated(ang * float(i) + deg_to_rad(start_angle)) + c)return arr# 获取圆角矩形
func round_rect(rect:Rect2,r:float,offset:float) -> PackedVector2Array:var arr:PackedVector2Arrayvar pots:PackedVector2Array = get_rect2_points(rect) # 矩形顶点var vec = Vector2.ONE * (r + offset)  # 圆角偏移向量arr.append_array(arc(pots[0] + vec,r,180,270))arr.append_array(arc(pots[1] + Transform2D.FLIP_X * vec,r,270,360))arr.append_array(arc(pots[2] + vec * -1,r,0,90))arr.append_array(arc(pots[3] + Transform2D.FLIP_Y * vec,r,90,180))arr.append(pots[0] + vec - Vector2(r,0))return arr# 获取Rect对应的点集合
func get_rect2_points(rect:Rect2) -> PackedVector2Array:var arr:PackedVector2Arrayvar pos = rect.positionvar end = rect.endvar w = rect.size.xarr.append(pos)arr.append(pos + Vector2.RIGHT * w)arr.append(end)arr.append(end - Vector2.RIGHT * w)return arr

提示

  • 这只是个基础版本,后续改进,敬请期待
http://www.yayakq.cn/news/761637/

相关文章:

  • 新干网站新干今年有哪些重大建设十个必备的视频制作app
  • 大学 建网站公众号做漫画网站
  • 关键词没有排名的网站怎么做河南省建设厅专业业务系统网站
  • 网站后台如何上传文件做旅游销售网站平台ppt模板
  • 便利的龙岗网站设计百度平台交易
  • 塘厦镇住房规划建设局网站263企业邮箱手机版
  • 网站建设起来还需要花钱吗怎么制作网站论坛模板
  • 网站代码模板编写已有网站开发安卓app
  • 自己怎么做电影网站可以赚钱吗河北项目网手机版
  • 网站的设计流程是怎么样的?电子工程网站大全
  • 深圳优定软件网站建设花乡做网站公司
  • 火花机 东莞网站建设青海做网站哪家好
  • 做网站必须托管服务器吗公司做搜索引擎优化
  • 语言免费网站建设wordpress集成微信收款
  • 网站平台做推广方案设计创建网站模板
  • 罗浮视窗网站建设自学网站开发软件开发
  • 从本地服务入手做本地网站龙岩建设局招聘网站
  • 国外优秀设计网站wordpress 调试插件下载
  • 十堰seo推广seo专家是什么意思
  • 湖南中耀建设集团有限公司网站wordpress 插件 权限
  • 装修设计网站哪个平台最好国外云服务器厂商
  • PHP网站开发方向本地开发app的公司在哪里
  • 长沙优化网站厂家沧州市网站制作公司
  • 家具公司网站建设成都网站制作建设
  • 桂林商品房做民宿在哪个网站登记好菜单设计制作网站
  • 给平面设计素材网站做素材挣钱吗辽宁住房城乡建设部官方网站
  • wordpress国内网站安卓应用开发用什么语言
  • 长春网站开发推荐潢川城乡建设局网站
  • 一 网站开发背景高端婚恋网站排名
  • 西安做网站带有网页的建筑公司