有个功能需求是将文字显示到LED屏幕上,LED屏幕的识别方式是0表示不亮,1表示亮。
我如果要将“测试”这2个字显示到LED屏幕上,需要先将“测试”转化为一张图片(假设底色为白色,字为黑色),然后将图片上的点一个个读出来,当读到底色的时候,在byte数组里面将对应的位置记录为0,当读到黑色的时候将此位置记录为1。理论上,将这个数组传送到led屏幕上,就可以显示了。
请问这种解决思路可行吗?
或者有更加简便的方式?可以直接用image对象把这些点读出来吗?

解决方案 »

  1.   

    Image对象不可以获取每个像素的颜色吗?绘的时候以白底黑字绘上去,通过比较颜色是不是黑色或者白色,就可以设置LED亮或者不亮了最好是生成跟LED大小相同的Image,这样便于设置大小不一样的可以先转成大小一样的Image
      

  2.   

    楼主方法可行。只是要注意图片大小,以及LED可表示点的范围。
      

  3.   

    我现在初步想是这样设置,led的大小是96×32,那么我图片也肯定是设置成96×32的大小。
    我想问问image对象有什么方法可以获得指定点的颜色值,,,,
    我很久没有做过c#了.
    查了一下msdn,发现image对象只有3个get开头的方法:GetHashCode   GetOutputValue  GetType  这3个方法都取不到颜色哦。我生成的对象是Bitmap的,去查查Bitmap的看看。
      

  4.   

    Bitmap.GetPixel 方法 Image是抽象类,一般使用Bitmap如果图片设置成跟LED相同大小的话,往上面写字可能不好控制字体大小先写好之后再缩放成与LED相同大小的吧
      

  5.   

    先写好再缩放?好主意呀。
    那我初始化大小要和字体配套呀?
    实例化bitmap对象的时候可以不指定大小吗?
    我再去试试,找一找缩放的方法。
      

  6.   

    需要指定大小,大小可以通过Graphics.MeasureString取得,取得的大小跟字体有关系
      

  7.   

    绽放也有现成的方法Image.GetThumbnailImage 
      

  8.   

    搞定!!最后没有用自动缩放的功能,如果自动缩放就不好定位字符了。
    用Graphics定位画到图片上,好控制格式。
    谢谢大家!
      

  9.   

    Image image;//你的Image 
    Bitmap bmp = new Bitmap(image);
     System.IO.Stream ms = null;
     bmp.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);
    for(i =0;i< ms)
    {
      byte bt = ms.ReadByte();//一个一个字节读出来
    }
         当然,如果效率要求不高可用,很慢,慎用
    Color color = bmp.GetPixel(10,10);//可读出(10,10)颜色结构体