image для каждого значения из enum

Alex Shulg
Дата: 25.01.2010 11:57:10
Отображаю поле класса в PropertyGrid'е. Поле имеет тип enum. Список раскрывается, все ок.
Захотел большего:
Привязал к каждому значению enum свой image:
    /// <summary>
    /// Добавляет изображение, соответствующее каждому типу
    /// </summary>
    public class rpTypeEditor : System.Drawing.Design.UITypeEditor
    {
        public override bool GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext context)
        {
            return true;
        }

        public override void PaintValue(System.Drawing.Design.PaintValueEventArgs e)
        {
            System.Drawing.Bitmap image = null;
            switch ((rpType)e.Value)
            {
                case rpType.Unknow:
                    image = (System.Drawing.Bitmap)my.Properties.Resources.ResourceManager.GetObject("IndicatorGray");
                    break;
                case rpType.Created:
                    image = (System.Drawing.Bitmap)my.Properties.Resources.ResourceManager.GetObject("IndicatorRed");
                    break;
                ...
            }
            if (image != null)
            {
                System.Drawing.Rectangle rect = e.Bounds;
                if (rect.Width != rect.Height) rect.Width = rect.Height;
                image.MakeTransparent();
                e.Graphics.DrawImage(image, rect);
            }
        }
Все ок, кроме 2-х моментов:
1) e.Bounds - прямоугольный, следовательно мои image'ы растягиваются. Исправил это проверкой
if (rect.Width != rect.Height) rect.Width = rect.Height;
2) вокруг image упорно рисуется черная рамка. А как от нее избавиться - ума не приложу.

Пожалуйста, подскажите, как убрать эту рамку.
Заранее благодарю.
Hakim
Дата: 13.05.2011 09:33:06
автор
2) вокруг image упорно рисуется черная рамка. А как от нее избавиться - ума не приложу.

 e.Graphics.ExcludeClip(e.Bounds);