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

网站主持人制作118论坛

网站主持人制作,118论坛,wordpress负载均衡上传附件,沧州网站建设外贸概述 Godot控件想要完全实现现代UI风格#xff0c;需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见#xff0c;在Godot中可以通过改进PanelContainer来或者自定…概述 Godot控件想要完全实现现代UI风格需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见在Godot中可以通过改进PanelContainer来或者自定义容器来实现圆角面板效果。 我初期想基于PanelContainer写一个容器类但是发现比较绕于是还是直接基于Container类型写了一个自定义容器类初期我偏向于直接用绘图函数绘制StyleBox但是当遇到渐变和图片时绘制StyleBox的方式将无法获得圆角所以最后不得不采用绘图函数draw_colored_polygon并且自己计算圆角矩形顶点集合以及计算每个点的UV坐标从而实现一种类似矢量遮罩的效果。 最终实现效果 RadiusPanelContainer 容器的自定义参数如下 实现如下功能 快速获得带圆角的纯色、图片背景包括渐变等的容器可以设定统一的描边颜色、宽度以及圆角大小可以设定子元素的内边距可以设定容器的不透明度 注意 需要搭配常见容器使用第一个子元素也是唯一被正确显示的第一级子元素需要是一个容器类型。 完整代码 # # RadiusPanelContainer # 类型自定义容器 # 概述现代化UI系列实现基础的圆角面板元素 # 巽星石 # 创建时间2025年1月3日13:45:32 # 最后修改时间2025年1月3日17: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 opacity1.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(steps1):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.dnsts.com.cn/news/168788.html

相关文章:

  • 手机网站字体大小规范如何建立自己的
  • 做宣传用什么网站好网络培训机构排名
  • 怎样做校园网站推广南京 网站建站
  • 餐饮美食网站建设需求分析顺德网站设计
  • 企业网站的建设流程包含哪些环节?wordpress七牛云加速
  • html网站作业商城版免费网站制作
  • 移动端网站建设的意义字体设计在线转换器
  • 比较好的营销网站上海金融网站制作网站制作公司好
  • 旅游公司的网站怎么做WordPress管理员邮件
  • 百度小说网高淳seo外包公司
  • 电子商务网站推广案例如何在国内做网站
  • 做个网站怎样做的婚纱摄影平台
  • 网站标题怎么修改深圳代理记账报税公司
  • 宣讲家网站两学一做心得lol解说网站源码
  • 专业网站建设套餐三维制图培训班在哪里
  • 制作网站用什么软件有哪些电脑配置会影响wordpress吗
  • 网站代运营收费制作一个简单的html网页
  • 西宁网站seo公司注册国际贸易公司需要多少钱
  • 深圳商城网站建设报价wordpress手机菜单导航
  • 百度云怎么做网站港海(天津)建设股份有限公司网站
  • 房屋装修图片百度爱采购怎么优化排名
  • 遵义网站建设优化公司浦东新区建设局官方网站
  • 网站开发文档doc做站群网站会被k吗
  • 建行网站查询密码是什么东西手机浏览器下载网页视频
  • 怎么做类似淘宝网站吗笑话网站模板
  • 考试网站建设建立公司官网
  • 商城网站制作深圳网站制作wordpress copyright
  • 高新网站开发1年经验潍坊网站建设案例
  • 1688货源网单页面网站如何优化引流
  • 用wang域名做购物网站怎么样wordpress 换中文