Trabajando con estilos de barra personalizados
Descripción general
En el proyecto de Microsoft, la vista Gantt Chart permite a los usuarios definir estilos de barra personalizados para mejorar la visualización o enfatizar tipos específicos de tareas. Esto incluye cambiar la apariencia de barras (inicio, medio, final), agregar colores personalizados, ajustar formas y configurar etiquetas de texto alrededor de las barras de tareas.
Aspose.Tasks para .NET admite este nivel de personalización a través de la clase ‘GanttBarstyle’. Con él, los desarrolladores pueden controlar programáticamente cómo cada tarea (o grupo de tareas) se muestra en la imagen de la tabla Gantt renderizada, haciendo que los informes y el análisis visual sean más significativos.
Definición de un estilo de barra personalizado
Para definir un nuevo estilo para una tarea o un conjunto específico de tareas, debe:
- Cree una nueva instancia de
ganttbarstyle
. - Establezca propiedades como
showfortaskuid
,middleshape
,startshape
,endshape
,fillcolor
y otros. - Agregue el estilo a la colección
ImageVeAptions.Barstyles
antes de representar.
Tip: The
ShowForTaskUid
property specifies which task UID this style applies to. You can also apply a style globally by omitting it.
Ejemplo: aplique estilo personalizado a una tarea específica
1static void ImplementCustomBarStyle()
2{
3 Project project = new Project("New Project.mpp");
4 project.RootTask.Children.Add("Task");
5
6 GanttChartView view = project.DefaultView as GanttChartView;
7 GanttBarStyle custom = GetCustomBarStyle();
8
9 // Add the custom bar style to the custom bar collection of the project view
10 view.CustomBarStyles.Add(custom);
11
12 MPPSaveOptions options = new MPPSaveOptions();
13 options.WriteViewData = true;
14
15 project.Save("ImplementCustomBarStyle_out.mpp", options);
16}
17
18static GanttBarStyle GetCustomBarStyle()
19{
20 GanttBarStyle style = new GanttBarStyle();
21 style.ShowFor = "1";
22 style.MiddleShape = GanttBarMiddleShape.RectangleBottom;
23 style.MiddleFillPattern = GanttBarFillPattern.MediumFill;
24 style.MiddleShapeColor = Color.Blue;
25
26 style.StartShape = GanttBarEndShape.ArrowDown;
27 style.StartShapeColor = Color.Red;
28
29 style.EndShape = GanttBarEndShape.ArrowUp;
30 style.EndShapeColor = Color.Yellow;
31
32 style.LeftField = Field.TaskResourceNames;
33 style.RightField = Field.TaskName;
34 style.TopField = Field.TaskStart;
35 style.BottomField = Field.TaskFinish;
36 style.InsideField = Field.TaskDuration;
37
38 return style;
39}
Reading Existing Custom Bar Styles
Aspose.Tasks also allows reading the GanttBarStyle
objects from existing MPP files. This can be useful if you need to analyze or replicate the styling applied in Microsoft Project.
Example: Read All Custom Styles from a Project
1Project project = new Project("New Project.mpp");
2
3GanttChartView view = project.DefaultView as GanttChartView;
4Console.WriteLine("Custom bar styles count: {0}", view.CustomBarStyles.Count);
5
6GanttBarStyle style1 = view.CustomBarStyles[0];
7
8Console.WriteLine("Style1.LeftField is TaskDurationText : {0}", style1.LeftField.Equals(Field.TaskDurationText));
9Console.WriteLine("Style1.RightField is TaskResourceNames : {0}", style1.RightField.Equals(Field.TaskResourceNames));
10Console.WriteLine("Style1.TopField is TaskACWP: {0}", style1.TopField.Equals(Field.TaskACWP));
11Console.WriteLine("Style1.BottomField is Undefined : {0}", style1.BottomField.Equals(Field.Undefined));
12Console.WriteLine("Style1.InsideField is Undefined : {0}", style1.InsideField.Equals(Field.Undefined));
13
14GanttBarStyle style2 = view.CustomBarStyles[1];
15Console.WriteLine("Style2.LeftField is TaskActualWork : {0}", style2.LeftField.Equals(Field.TaskActualWork));
16Console.WriteLine("Style2.RightField is TaskActualCost : {0}", style2.RightField.Equals(Field.TaskActualCost));
17Console.WriteLine("Style2.TopField is Undefined : {0}", style2.TopField.Equals(Field.Undefined));
18Console.WriteLine("Style2.BottomField is Undefined : {0}", style2.BottomField.Equals(Field.Undefined));
19Console.WriteLine("Style2.InsideField is Undefined : {0}", style2.InsideField.Equals(Field.Undefined));
20
21GanttBarStyle style3 = view.CustomBarStyles[2];
22Console.WriteLine("Style3.LeftField is TaskPercentComplete : {0}", style3.LeftField.Equals(Field.TaskPercentComplete));
23Console.WriteLine("Style3.RightField is TaskPercentWorkComplete : {0}", style3.RightField.Equals(Field.TaskPercentWorkComplete));
24Console.WriteLine("Style3.TopField is Field.TaskActive : {0}", style3.TopField.Equals(Field.TaskActive));
25Console.WriteLine("Style3.BottomField is TaskActualCost : {0}", style3.BottomField.Equals(Field.TaskActualCost));
26Console.WriteLine("Style3.InsideField is Field.TaskActualDuration : {0}", style3.InsideField.Equals(Field.TaskActualDuration));
27
28Console.WriteLine("Style3.StartShape is HouseDown : {0}", style3.StartShape.Equals(GanttBarEndShape.HouseDown));
29Console.WriteLine("Style3.StartShapeType is Framed : {0}", style3.StartShapeType.Equals(GanttBarType.Framed));
30Console.WriteLine("Style3.StartShapeColor is Red : {0}", style3.StartShapeColor.Equals(Color.FromArgb(Color.Red.ToArgb())));
31
32Console.WriteLine("Style3.EndShape is CircleDiamond : {0}", style3.EndShape.Equals(GanttBarEndShape.CircleDiamond));
33Console.WriteLine("Style3.EndShapeType is Solid : {0}", style3.EndShapeType.Equals(GanttBarType.Solid) );
34Console.WriteLine("Style3.EndShapeColor is Yellow : {0}", style3.EndShapeColor.Equals(Color.FromArgb(Color.Yellow.ToArgb())));
35
36Console.WriteLine("Style3.MiddleShape is RectangleTop : {0}", style3.MiddleShape.Equals(GanttBarMiddleShape.RectangleTop));
37Console.WriteLine("Style3.MiddleFillPattern is SolidFill : {0}", style3.MiddleFillPattern.Equals(GanttBarFillPattern.SolidFill));
38Console.WriteLine("Style3.EndShapeColor is Red : {0}", style3.MiddleShapeColor.Equals(Color.FromArgb(Color.Red.ToArgb())));
Casos de uso comunes
Los estilos de barra personalizados se utilizan habitualmente para:
- Distinguir visualmente hitos, tareas críticas o tareas de resumen.
- Aplicar codificación de colores para diferentes equipos o departamentos.
- Etiquetar tareas dinámicamente según campos personalizados (
Texto1
,NombresDeRecursos
, etc.). - Resaltar tareas retrasadas con colores o formas únicos.
Resumen
Aspose.Tasks para .NET proporciona control total sobre la visualización de las tareas en los diagramas de Gantt mediante la clase GanttBarStyle
. Tanto si crea un nuevo informe como si replica la salida de Microsoft Project, la API permite un control preciso de las formas, los colores, las etiquetas de texto y la lógica de estilo.