制作连线点击显示差值功能

This commit is contained in:
lujiajian 2025-12-19 13:30:04 +08:00
parent 6dc6b8db7d
commit db87574dc1
8 changed files with 10258 additions and 35 deletions

View File

@ -11,7 +11,7 @@ Material:
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ValidKeywords: [] m_ValidKeywords: []
m_InvalidKeywords: [] m_InvalidKeywords: []
m_LightmapFlags: 4 m_LightmapFlags: 6
m_EnableInstancingVariants: 0 m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0 m_DoubleSidedGI: 0
m_CustomRenderQueue: -1 m_CustomRenderQueue: -1

View File

@ -1,5 +1,79 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!1 &1110202010489701957
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7701976676985358913}
m_Layer: 5
m_Name: serie_1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7701976676985358913
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1110202010489701957}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5860133489455756405}
- {fileID: 2644150647020581694}
m_Father: {fileID: 5233865049348595634}
m_RootOrder: 18
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 900.968, y: 464.26}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2112891255249315096
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2644150647020581694}
m_Layer: 5
m_Name: title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2644150647020581694
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2112891255249315096}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7701976676985358913}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 900.968, y: 464.26}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &3586287817964559465 --- !u!1 &3586287817964559465
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -473,11 +547,11 @@ RectTransform:
m_Father: {fileID: 5233865049873455249} m_Father: {fileID: 5233865049873455249}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 0.5} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -2, y: 0} m_AnchoredPosition: {x: 2, y: -0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 1, y: 0.5} m_Pivot: {x: 0, y: 1}
--- !u!222 &5233865048469690713 --- !u!222 &5233865048469690713
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -513,7 +587,7 @@ MonoBehaviour:
m_BestFit: 0 m_BestFit: 0
m_MinSize: 10 m_MinSize: 10
m_MaxSize: 40 m_MaxSize: 40
m_Alignment: 5 m_Alignment: 0
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 1 m_HorizontalOverflow: 1
@ -953,7 +1027,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5} m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5} m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -524.2, y: 84} m_AnchoredPosition: {x: -809.8616, y: 129.9928}
m_SizeDelta: {x: 24, y: 20} m_SizeDelta: {x: 24, y: 20}
m_Pivot: {x: 1, y: 0.5} m_Pivot: {x: 1, y: 0.5}
--- !u!222 &5233865048624578726 --- !u!222 &5233865048624578726
@ -1024,7 +1098,7 @@ RectTransform:
m_Children: m_Children:
- {fileID: 5233865050009983995} - {fileID: 5233865050009983995}
m_Father: {fileID: 5233865049348595634} m_Father: {fileID: 5233865049348595634}
m_RootOrder: 19 m_RootOrder: 21
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
@ -2040,7 +2114,7 @@ MonoBehaviour:
m_HorizontalOverflow: 1 m_HorizontalOverflow: 1
m_VerticalOverflow: 1 m_VerticalOverflow: 1
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: 40 m_Text: 50
--- !u!1 &5233865048960745191 --- !u!1 &5233865048960745191
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3132,6 +3206,7 @@ GameObject:
- component: {fileID: 5233865049348595634} - component: {fileID: 5233865049348595634}
- component: {fileID: 5233865049348595628} - component: {fileID: 5233865049348595628}
- component: {fileID: 5233865049348595635} - component: {fileID: 5233865049348595635}
- component: {fileID: 5478553737158509845}
m_Layer: 5 m_Layer: 5
m_Name: LineChart_Area m_Name: LineChart_Area
m_TagString: Untagged m_TagString: Untagged
@ -3169,9 +3244,10 @@ RectTransform:
- {fileID: 5233865048404102461} - {fileID: 5233865048404102461}
- {fileID: 5233865048594166507} - {fileID: 5233865048594166507}
- {fileID: 5233865049373520924} - {fileID: 5233865049373520924}
- {fileID: 7701976676985358913}
- {fileID: 5233865049682791639} - {fileID: 5233865049682791639}
- {fileID: 5233865048649985101}
- {fileID: 5233865050072019159} - {fileID: 5233865050072019159}
- {fileID: 5233865048649985101}
m_Father: {fileID: 2444594900165260165} m_Father: {fileID: 2444594900165260165}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -3231,6 +3307,7 @@ MonoBehaviour:
- XAxis0 - XAxis0
- YAxis0 - YAxis0
- datazoom0 - datazoom0
- serie_1
m_ChartName: m_ChartName:
m_Theme: m_Theme:
m_Show: 1 m_Show: 1
@ -5196,6 +5273,19 @@ MonoBehaviour:
m_SerieSimplifiedLines: [] m_SerieSimplifiedLines: []
m_SerieSimplifiedBars: [] m_SerieSimplifiedBars: []
m_SerieSimplifiedCandlesticks: [] m_SerieSimplifiedCandlesticks: []
--- !u!114 &5478553737158509845
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5233865049348595633}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d6484bb477bcc094baef718056c6eeff, type: 3}
m_Name:
m_EditorClassIdentifier:
chart: {fileID: 5233865049348595635}
--- !u!1 &5233865049350209622 --- !u!1 &5233865049350209622
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -5275,7 +5365,7 @@ MonoBehaviour:
m_HorizontalOverflow: 1 m_HorizontalOverflow: 1
m_VerticalOverflow: 1 m_VerticalOverflow: 1
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: 40 m_Text: 70
--- !u!1 &5233865049354843816 --- !u!1 &5233865049354843816
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -5733,11 +5823,11 @@ RectTransform:
m_Father: {fileID: 5233865049602923319} m_Father: {fileID: 5233865049602923319}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 2, y: 0} m_AnchoredPosition: {x: 2, y: -0}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0, y: 1}
--- !u!222 &5233865049531012862 --- !u!222 &5233865049531012862
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -5773,7 +5863,7 @@ MonoBehaviour:
m_BestFit: 0 m_BestFit: 0
m_MinSize: 10 m_MinSize: 10
m_MaxSize: 40 m_MaxSize: 40
m_Alignment: 4 m_Alignment: 0
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 1 m_HorizontalOverflow: 1
@ -6035,7 +6125,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5} m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5} m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -524.2, y: 84} m_AnchoredPosition: {x: -809.8616, y: 87.54617}
m_SizeDelta: {x: 24, y: 20} m_SizeDelta: {x: 24, y: 20}
m_Pivot: {x: 1, y: 0.5} m_Pivot: {x: 1, y: 0.5}
--- !u!222 &5233865049550649396 --- !u!222 &5233865049550649396
@ -6177,11 +6267,11 @@ RectTransform:
m_Father: {fileID: 5233865049160592566} m_Father: {fileID: 5233865049160592566}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 450.484, y: -232.13}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0, y: 1}
--- !u!222 &5233865049602923313 --- !u!222 &5233865049602923313
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -6327,7 +6417,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 5233865049348595634} m_Father: {fileID: 5233865049348595634}
m_RootOrder: 18 m_RootOrder: 19
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -6441,7 +6531,7 @@ MonoBehaviour:
m_HorizontalOverflow: 1 m_HorizontalOverflow: 1
m_VerticalOverflow: 1 m_VerticalOverflow: 1
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: 40 m_Text: 60
--- !u!1 &5233865049745669928 --- !u!1 &5233865049745669928
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -7401,11 +7491,11 @@ RectTransform:
m_Father: {fileID: 5233865049160592566} m_Father: {fileID: 5233865049160592566}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 0.5} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -450.484, y: 0} m_AnchoredPosition: {x: 450.484, y: -232.13}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 1, y: 0.5} m_Pivot: {x: 0, y: 1}
--- !u!222 &5233865049873455251 --- !u!222 &5233865049873455251
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -7481,7 +7571,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5} m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5} m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -524.2, y: 84} m_AnchoredPosition: {x: -809.8616, y: 45.09955}
m_SizeDelta: {x: 24, y: 20} m_SizeDelta: {x: 24, y: 20}
m_Pivot: {x: 1, y: 0.5} m_Pivot: {x: 1, y: 0.5}
--- !u!222 &5233865049945185683 --- !u!222 &5233865049945185683
@ -9685,6 +9775,42 @@ MonoBehaviour:
m_FillOrigin: 0 m_FillOrigin: 0
m_UseSpriteMesh: 0 m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1 m_PixelsPerUnitMultiplier: 1
--- !u!1 &5944203823237816838
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5860133489455756405}
m_Layer: 5
m_Name: label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5860133489455756405
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5944203823237816838}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7701976676985358913}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 900.968, y: 464.26}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &7853188093099217572 --- !u!1 &7853188093099217572
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -1560,10 +1560,10 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Navigation: m_Navigation:
m_Mode: 3 m_Mode: 4
m_WrapAround: 0 m_WrapAround: 0
m_SelectOnUp: {fileID: 0} m_SelectOnUp: {fileID: 5642799020164951658}
m_SelectOnDown: {fileID: 0} m_SelectOnDown: {fileID: 5642799020164951658}
m_SelectOnLeft: {fileID: 0} m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0} m_SelectOnRight: {fileID: 0}
m_Transition: 1 m_Transition: 1
@ -1736,10 +1736,10 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Navigation: m_Navigation:
m_Mode: 3 m_Mode: 4
m_WrapAround: 0 m_WrapAround: 0
m_SelectOnUp: {fileID: 0} m_SelectOnUp: {fileID: 5642799020123088527}
m_SelectOnDown: {fileID: 0} m_SelectOnDown: {fileID: 5642799020123088527}
m_SelectOnLeft: {fileID: 0} m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0} m_SelectOnRight: {fileID: 0}
m_Transition: 1 m_Transition: 1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ca7149bea5c3f504c882f376273024aa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,86 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using XCharts.Runtime;
public class ChartControl : MonoBehaviour
{
public BaseChart chart;
public Serie serie;
List<string> data = new List<string>();
bool isclick = true;//是否可以开始添加新数据
private void Awake()
{
serie = chart.GetSerie<Serie>();
}
void Update()
{
Debug.Log("数据:" + serie.context.pointerItemDataIndex);
if (serie.context.pointerItemDataIndex > 0 && isclick)
{
SerieData series = chart.GetSerie("数据").GetSerieData(serie.context.pointerItemDataIndex);
Debug.Log("鼠标点击的数据:" + series.data[1]);
XAxis Xaxis = chart.GetChartComponent<XAxis>();
Debug.Log("X轴名称" + Xaxis.data[0]);
string value = Xaxis.data[serie.context.pointerItemDataIndex] + "|" + series.data[1].ToString();
if (!data.Contains(value))
{
data.Add(value);
}
}
if (data.Count > 1)
{
string[] str1 = data[0].Split('|');
string[] str2 = data[1].Split('|');
Debug.Log(str1[0] + "" + str1[1] + "和" + str2[0] + "" + str2[1] + "的差值为:" + MathF.Abs(float.Parse(str1[1]) - float.Parse(str2[1])));
data = new List<string>();
isclick = false;
}
if (Input.GetMouseButtonDown(0))
{
if (!isclick)
{
isclick = true;
}
}
//Debug.Log(chart.GetChartComponent<Tooltip>().runtimeDataIndex.Count);
//List<int> data = new List<int>();
//data = chart.GetChartComponent<Tooltip>().runtimeDataIndex;
//for (int i = 0; data.Count > i; i++)
//{
// Debug.Log("数据:" + data[i]);
//}
//if (chart.GetChartComponent<Tooltip>().IsActive())
//{
// Debug.Log("数据:" + serie.context.pointerItemDataIndex);
// if (serie.context.pointerItemDataIndex > 0)
// {
// SerieData series = chart.GetSerie("数据").GetSerieData(serie.context.pointerItemDataIndex);
// Debug.Log("鼠标点击的数据:" + series.data[1]);
// XAxis Xaxis = chart.GetChartComponent<XAxis>();
// Debug.Log("X轴名称" + Xaxis.data[0]);
// string value = Xaxis.data[0] + "|" + series.data[1].ToString();
// if (!data.Contains(value))
// {
// data.Add(value);
// }
// }
// if (data.Count >= 2)
// {
// string[] str1 = data[0].Split('|');
// string[] str2 = data[1].Split('|');
// Debug.Log(str1[0] + "" + str1[1] + "和" + str2[0] + "" + str2[1] + "的差值为:" + MathF.Abs(float.Parse(str1[1]) - float.Parse(str2[1])));
// data = new List<string>();
// }
//}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d6484bb477bcc094baef718056c6eeff
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2,7 +2,6 @@ using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using UnityEngine.UI; using UnityEngine.UI;
using static UnityEngine.Rendering.DebugUI.Table;
public class UI_TopTitlePanel : BasePanel public class UI_TopTitlePanel : BasePanel
{ {