protected virtual void MakeSortIndicatorImages()
{
// Don't mess with the image list in design mode
if (this.DesignMode)
return;
ImageList il = this.SmallImageList;
if (il == null) {
il = new ImageList();
il.ImageSize = new Size(16, 16);
il.ColorDepth = ColorDepth.Depth32Bit;
}
// This arrangement of points works well with (16,16) images, and OK with others
int midX = il.ImageSize.Width / 2;
int midY = (il.ImageSize.Height / 2) - 1;
int deltaX = midX - 2;
int deltaY = deltaX / 2;
if (il.Images.IndexOfKey(SORT_INDICATOR_UP_KEY) == -1) {
Point pt1 = new Point(midX - deltaX, midY + deltaY);
Point pt2 = new Point(midX, midY - deltaY - 1);
Point pt3 = new Point(midX + deltaX, midY + deltaY);
il.Images.Add(SORT_INDICATOR_UP_KEY, this.MakeTriangleBitmap(il.ImageSize, new Point[] { pt1, pt2, pt3 }));
}
if (il.Images.IndexOfKey(SORT_INDICATOR_DOWN_KEY) == -1) {
Point pt1 = new Point(midX - deltaX, midY - deltaY);
Point pt2 = new Point(midX, midY + deltaY);
Point pt3 = new Point(midX + deltaX, midY - deltaY);
il.Images.Add(SORT_INDICATOR_DOWN_KEY, this.MakeTriangleBitmap(il.ImageSize, new Point[] { pt1, pt2, pt3 }));
}
this.SmallImageList = il;
}