在UnityUI中绘制线状统计图2.0
在之前的基础上添加横纵坐标
上一期在这里:https://www.cnblogs.com/AlphaIcarus/p/16123434.html
先分别创建横纵坐标点的模板,将这两个Text放在Graphic Container之下
完成后隐藏它们
将这两个模板设为预制体也可以
修改MyGraph
public class MyGraph : MonoBehaviour
{
......
private RectTransform labelX; //声明一个RectTransform
private RectTransform labelY; //声明一个RectTransform
private void Awake()
{
//graphContainer = transform.Find("GraphContainer").GetComponent<RectTransform>();
......
//因为之前把模板放在graphContainer之下,如果是设为了预制体,直接声明然后赋值就行,不需要这两句
labelX = graphContainer.Find("labelX").GetComponent<RectTransform>(); //找到X轴的模板
labelY = graphContainer.Find("labelY").GetComponent<RectTransform>(); //找到Y轴的模板
......
}
//private GameObject CreateCircle(Vector2 anchoredPosition){......}
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++)
{
......
//lastPoint = circleGameobject;
RectTransform labelx = Instantiate(labelX); //声明一个RectTransform,复制并实例化模板
//将新生成的坐标设为graphContainer子物体,这样锚点位于graphContainer左下角(原点)方便计算位置坐标
labelx.SetParent(graphContainer);
labelx.gameObject.SetActive(true); //显示坐标,因为之前隐藏了模板
labelx.anchoredPosition = new Vector2(xPos, -25); //设置横坐标位置
labelx.GetComponent<Text>().text = i.ToString(); //设置横坐标显示的数据
}
}
//private void DrawLine(Vector2 pointA, Vector2 pointB){......}
//private float RotateAngle(float x, float y){......}
}
显示结果:
这里我又把背景大小调整了一下,方便横坐标显示
接下来是y轴坐标
修改MyGraph
......
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++){......}
int count = 10; //这里为y坐标个数
for (int i = 0; i <= count; i++)
{
RectTransform labely = Instantiate(labelY); //获取模板
labely.SetParent(graphContainer); //设置父物体
labely.gameObject.SetActive(true); //显示
float yPos = i * 1f / count;
labely.anchoredPosition = new Vector2(-50f, yPos * graphHeight); //y轴坐标
labely.GetComponent<Text>().text = Mathf.RoundToInt(yPos * maxValue).ToString(); //显示的值
}
}
显示效果:
接下来是横纵坐标的线
和坐标点的方法类似,分别创建横纵坐标线就行,这里两个线条都是Image,且锚点都是graphcontainer,即原点位于左下角
然后修改MyGraph
public class MyGraph : MonoBehaviour
{
......
private RectTransform lineH;
private RectTransform lineV;
......
private void Awake()
{
......
lineH = graphContainer.Find("LineHorizontal").GetComponent<RectTransform>();
lineV = graphContainer.Find("LineVertical").GetComponent<RectTransform>();
......
}
private void ShowGraph(List<int> valueList)
{
......
for (int i = 0; i < valueList.Count; i++)
{
......
//在横纵坐标后面添加即可,因为位置和坐标点相同
RectTransform lineVertical = Instantiate(lineV);
lineVertical.SetParent(graphContainer, false);
lineVertical.gameObject.SetActive(true);
lineVertical.anchoredPosition = new Vector2(xPos, 0f);
}
int count = 10;
for (int i = 0; i <= count; i++)
{
......
//在横纵坐标后面添加即可,因为位置和坐标点相同
RectTransform lingHorizontal = Instantiate(lineH);
lingHorizontal.SetParent(graphContainer, false);
lingHorizontal.gameObject.SetActive(true);
lingHorizontal.anchoredPosition = new Vector2(-0f, yPos * graphHeight);
}
}
}
显示效果:
线条可以自行修改透明度和颜色或者修改为虚线贴图
下一步为绘制柱状统计图:
https://www.cnblogs.com/AlphaIcarus/p/16128922.html
在UnityUI中绘制线状统计图2.0的更多相关文章
- 在UnityUI中绘制线状统计图
##先来个效果图 觉得不好看可以自己调整 ##1.绘制数据点 线状图一般由数据点和连线组成 在绘制连线之前,我们先标出数据点 这里我选择用Image图片来绘制数据点 新建Canvas,添加空物体Gra ...
- 使用ArcGIS API for Silverlight + Visifire绘制地图统计图
原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释 ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- CSharpGL(6)在OpenGL中绘制UI元素
CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...
- HTML5在canvas中绘制复杂形状附效果截图
HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路 ...
- 在 Canvas 中绘制扇形
在 HTML5 Canvas 中,我们可以通过 arc 方法来绘制圆形: // context.arc(x, y, r, sAngle, eAngle, counterclockwise); var ...
- Android中绘制圆角矩形图片及任意形状图片
圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...
- MATLAB坐标系中绘制图片
MATLAB坐标系中绘制图片 方法一 使用图片坐标循环的方式,代码如下. clear,clc,close all tic; map=imbinarize(imread('map.bmp'));%map ...
- Java 在PDF文档中绘制图形
本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...
随机推荐
- SignalR 入门 .netCore实现聊天室
SignalR 入门 .netCore实现聊天室 本文根据微软SignalR 简介 | Microsoft Docs 和 ASP.NET Core SignalR 简介 | Microsoft Doc ...
- 6月19日 python学习总结 Django之路由系统
Django之路由系统 Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...
- Mysql等保部分加固
一.等保要求:操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换. 实施步骤: 启用口令复杂审核(5.6.6版本以上,才有此模块功能,需要重启mysql). 查看 ...
- python练习册 每天一个小程序 第0009题
1 ''' 2 题目描述: 3 找出一个html文件中所有的url 4 5 思路 : 6 利用正则表达式进行匹配 7 8 ''' 9 10 11 import re 12 13 14 with ope ...
- Linux 安装mysql 看这一篇就够了
mysql 安装教程 下载地址:https://downloads.mysql.com 查看系统中默认的mysql 依赖 rpm -qa | grep mysql rpm -qa | grep mar ...
- 浅谈spin lock 与信号量
理解阻塞和非阻塞概念: eg: open->read->close eg: open->while(read)->close read -> data received/ ...
- 【编程教室】Python绘制冬奥吉祥物“冰墩墩”
大家好,欢迎来到 Crossin的编程教室 ! 这两天,随着北京冬奥会的开幕,吉祥物"冰墩墩"可是火出了圈,多少人排长队都买不到.据说甚至有人把价格炒到了几千元. 就连昨天的&qu ...
- Material Design with the Android Design Support Library
Material Design with the Android Design Support Library 原文http://www.sitepoint.com/material-design-a ...
- SpringBoot项目集成swagger报NumberFormatException: For input string: ""
java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.f ...
- spring-boot-learning 缓存之redis
什么是BSD协议: BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版". BSD开源协议是一个给于使用者 ...