zoukankan      html  css  js  c++  java
  • c# 文字组合文字

    这个标题很不好起,什么叫文字组合文字?通过下图就明白了:

    image

    可以看到,这个M是由很多“*”组成,这就是文字组合文字。

    其实思路很简单,就是通过将需要产生的组合文字,先绘制到一个Bitmap中,然后通过判断Bitmap像素来组合我们需要的文字。请看以下很简略的代码:

      private Bitmap ConvertCharToBitmap(char c) {
                Bitmap result = new Bitmap(40, 40);
                Graphics g = Graphics.FromImage(result);
                g.Clear(Color.White);
    
                Font drawFont = new Font("Courier New", 40, GraphicsUnit.Pixel);
                g.DrawString(c.ToString(), drawFont, new SolidBrush(Color.Black), new PointF(0, 0));
    
                return result;
            }
    
            private string ConvertBitmapToStrings(Bitmap bmp) {
                string result = "";
                for (int h = 0; h < bmp.Height; h++) {
                    for (int w = 0; w < bmp.Width; w++) {
                        if (bmp.GetPixel(w, h).R < 250) { //表示文字区域
                            result += "*";
                        } else {  //表示空白
                            result += " ";
                        }
                    }
                    result += Environment.NewLine;
                }
                return result;
            }

    一共两个方法,一个是将字符转换成图片,另一个再将图片转换成字符串,调用如下:

     private void btnBuild_Click(object sender, EventArgs e) {
                if (string.IsNullOrEmpty(txtAWord.Text)) {
                    MessageBox.Show("请输入一个字符!", "错误提示",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtAWord.Focus();
                    return;
                }
    
                txtOutput.Text = ConvertBitmapToStrings(ConvertCharToBitmap(txtAWord.Text[0]));
            }

    蛮好玩的,大家可以将它扩展和增强一下,比如任何图片组合成文字(主要根据灰度),比如不只是一个字符,而是字符串(这个比上个要简单很多)。

    作者:Sun.M
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    JAVA数据库连接池
    数据库连接池总结 Proxool
    Linux下挂载ISO文件
    Runtime.getRuntime().addShutdownHook()的使用
    tomcat original passports setting
    JDBC之通过DatabaseMetaData对象了解数据库的信息
    linux下mysql远程登陆
    教您如何安全的应用 MySQL
    Eclipse中cvs的使用介绍
    WM_COPYDATA
  • 原文地址:https://www.cnblogs.com/prinsun/p/2636582.html
Copyright © 2011-2022 走看看