使用GDI+生成KnownColor列表

简介: 原文:使用GDI+生成KnownColor列表 在写这篇“GDI+与WPF中的颜色简析”之前,我试着使用GDI+生成KnownColor列表。
原文: 使用GDI+生成KnownColor列表

在写这篇“GDI+与WPF中的颜色简析”之前,我试着使用GDI+生成KnownColor列表。现将关键代码贴出来吧。

最终效果图:
KnownColorGDIPlus

现将关键代码:
         Bitmap m_Bitmap = null;
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            if (m_Bitmap != null)
            {
                Graphics g = e.Graphics;
                g.DrawImage(m_Bitmap, new Point(0, 0));
            }
        }

        private void btnTestColor_Click(object sender, EventArgs e)
        {
            int count = 0;
            foreach (string s in Enum.GetNames(typeof(KnownColor)))
            {
                count++;
            }

            int cols = 4;
            int rows = count / cols;
            if (count % rows > 0) rows++;

            int rectWidth = 100;
            int rectHeight = 30;
            int wordSpaceFromRect = 10;
            int rowSpace = 10;
            int marginTop = 20;
            int marginBottom = 20;

            int width = 300 * cols + 50;
            int height = (rectHeight + rowSpace) * rows + marginTop + marginBottom ;
            m_Bitmap = new Bitmap(width, height);

            Graphics g = Graphics.FromImage(m_Bitmap);
            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
            g.Clear(Color.White);
            Color someColor = Color.FromArgb(0);
            Color redShade = Color.FromArgb(255, 200, 0, 100);

            SolidBrush myBrush1;
            Font myFont = new Font("Arial", 12);
            int x = 20;
            int y = marginTop;

            for (int i = 0; i < count; i++ )
            {
                someColor = Color.FromKnownColor((KnownColor)i);
                myBrush1.Color = someColor;
                g.FillRectangle(myBrush1, x, y, rectWidth, rectHeight);
                g.DrawRectangle(Pens.Black, x, y, rectWidth, rectHeight);
                g.DrawString(someColor.ToString().Replace("Color [","").Replace("]",""), myFont, Brushes.Black, x + rectWidth + wordSpaceFromRect, y);
                if (i % cols == cols - 1)
                {
                    y += rectHeight + rowSpace;
                    x -= 300 * (cols - 1);
                }
                if (i % cols < cols - 1)
                {
                    x += 300;
                }
            }

            g.Dispose();

            this.Invalidate();
        }

目录
相关文章
|
2月前
|
移动开发 HTML5 容器
列表元素
【2月更文挑战第13天】列表元素。
28 0
|
4天前
|
索引 Python
列表
【6月更文挑战第28天】列表。
11 3
|
9月前
|
Java 数据库连接 程序员
收藏文章列表
收藏文章列表
20 0
|
11月前
|
索引 Python
|
前端开发 开发者
列表 | 学习笔记
快速学习列表
77 0
列表 | 学习笔记
|
存储 人工智能 索引
|
移动开发 前端开发 HTML5
web前端学习(七)——HTML5中列表(无序列表、有序列表、嵌套列表、自定义列表)及列表项的相关标签设置
web前端学习(七)——HTML5中列表(无序列表、有序列表、嵌套列表、自定义列表)及列表项的相关标签设置
web前端学习(七)——HTML5中列表(无序列表、有序列表、嵌套列表、自定义列表)及列表项的相关标签设置
7.5.1 创建条目列表示例
7.5.1 创建条目列表示例
83 0
7.5.1 创建条目列表示例
|
开发工具 开发者
好文章列表
在阿里云开发者社区看到的好文章
289 0
|
索引
4.5 列表
下面我们学习的是列表,列表是由一序列特定顺序排列的元素组成的。可以把字符串、数字、字典等东西加入到列表中,其中的元素之间没有任何关系。列表也是自带下标的,默认从0开始。 strl='werwfrwefrvrtgrg' print(type(strl)) print(list...
661 0