Point Batch Primitive

The point batch renders a group of points with the same pixel size but potentially different colors. The point batch is commonly used to visualize waypoints or locations, such as cities, when the camera is at a distance. Using the point batch is similar to using the polyline but only the points are rendered, not the line segments between them. This is demonstrated in the following example from the GraphicsHowTo:

[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager;

Array positions = new object[]
{
     39.88, -75.25, 0, // Philadelphia
     38.85, -77.04, 0, // Washington, D.C.
     29.98, -90.25, 0, // New Orleans
     37.37, -121.92, 0 // San Jose
};

IAgStkGraphicsPointBatchPrimitive pointBatch = manager.Initializers.PointBatchPrimitive.Initialize();
pointBatch.SetCartographic("Earth", ref positions);
pointBatch.PixelSize = 5;
((IAgStkGraphicsPrimitive)pointBatch).Color = Color.White;
pointBatch.DisplayOutline = true;
pointBatch.OutlineWidth = 2;
pointBatch.OutlineColor = Color.Red;

manager.Primitives.Add((IAgStkGraphicsPrimitive)pointBatch);
manager.Render();


A collection of positions is used to define the Point Batch. The pixel size is set to 10 pixels. As the camera zooms in and out, the size of a point on the screen stays the same. Color, DisplayOutline, and OutlineColor are used to give each point a red interior with a white outline.

In the above example, each position in the batch is the same color. The point batch also supports a per position color using a parallel collection similar to the polyline primitive. In addition to a collection of positions, a corresponding collection of colors is used to initialize the point batch as demonstrated in the following example from the GraphicsHowTo:

[C#] Copy Code
IAgStkGraphicsSceneManager manager = ((IAgScenario)root.CurrentScenario).SceneManager;
Array positions = new object[]
{
     37.62, -122.38, 0.0, // San Francisco
     38.52, -121.50, 0.0, // Sacramento
     33.93, -118.40, 0.0, // Los Angeles
     32.82, -117.13, 0.0 // San Diego
};

Array colors = new object[]
{
     (uint)Color.Red.ToArgb(),
     (uint)Color.Orange.ToArgb(),
     (uint)Color.Blue.ToArgb(),
     (uint)Color.White.ToArgb()
};

IAgStkGraphicsPointBatchPrimitive pointBatch = manager.Initializers.PointBatchPrimitive.Initialize();
pointBatch.SetCartographicWithColors("Earth", ref positions, ref colors);
pointBatch.PixelSize = 8;

manager.Primitives.Add((IAgStkGraphicsPrimitive)pointBatch);
manager.Render();