본문 바로가기
C#/DevExpress

DevExpress / Winform 사용자 지정 이미지를 ComboBoxEdit에 넣기

by HyunS_ 2019. 4. 8.
728x90

ComboBoxEdit에 사용자 지정 이미지를 넣어서 사용하는 방법입니다.

 

코드에 Color와 HatchStyle이 적용되어 있는데 별도의 이미지가 없을 경우 사용합니다.

 

using DevExpress.XtraEditors.Controls;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            CreateColorsItems();
            CreateHatchStyleItems();
        }

        #region CreateColorsItems
        /// <summary>
        /// color 이미지를 추가하여 ComboBoxEdit에 내용을 추가합니다.
        /// </summary>
        private void CreateColorsItems()
        {
            List<Color> customColors = new List<Color>();
            customColors.AddRange(new Color[] { Color.Red, Color.Black, Color.Yellow, Color.Green, Color.Blue, Color.Brown, Color.White });
            foreach (Color color in customColors)
            {
                imageComboBoxEdit2.Properties.Items.Add(new ImageComboBoxItem(color.ToString(), color));
            }

            ImageList imagesColors = new ImageList();
            imageComboBoxEdit2.Properties.SmallImages = imagesColors;

            // 이미지의 크기를 설정합니다.
            foreach (ImageComboBoxItem item in imageComboBoxEdit2.Properties.Items)
            {
                int iWidth = 16;
                int iHeight = 16;
                Bitmap bmp = new Bitmap(iWidth, iHeight);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.DrawRectangle(new Pen(Color.Black, 2), 0, 0, iWidth, iHeight);
                    g.FillRectangle(new SolidBrush((Color)item.Value), 1, 1, iWidth - 2, iHeight - 2);

                }
                imagesColors.Images.Add(bmp);
                item.ImageIndex = imagesColors.Images.Count - 1;
            }
        }

        #endregion

        #region CreateHatchStyleItems
        /// <summary>
        /// HetchStyle 이미지를 추가하여 ComboBoxEdit에 내용을 추가합니다.
        /// </summary>
        private void CreateHatchStyleItems()
        {
            imageComboBoxEdit1.Properties.Items.AddEnum(typeof(System.Drawing.Drawing2D.HatchStyle));

            ImageList imagesHS = new ImageList();
            imageComboBoxEdit1.Properties.SmallImages = imagesHS;

            // 이미지의 크기를 설정합니다.
            foreach (ImageComboBoxItem item in imageComboBoxEdit1.Properties.Items)
            {
                int iWidth = 16;
                int iHeight = 16;
                Bitmap bmp = new Bitmap(iWidth, iHeight);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.DrawRectangle(new Pen(Color.Black, 2), 0, 0, iWidth, iHeight);
                    HatchBrush b = new HatchBrush((HatchStyle)item.Value, Color.Black, Color.White);
                    g.FillRectangle(b, 0, 0, iWidth, iHeight);

                }
                imagesHS.Images.Add(bmp);
                item.ImageIndex = imagesHS.Images.Count - 1;
            }
        }

        #endregion
    }
}

 

728x90

댓글