Exemple #1
0
        private Bitmap text2Image(string text)
        {
            Bitmap   bm_bw = new Bitmap(picBW.Width, picBW.Height);
            Graphics g     = Graphics.FromImage(bm_bw);

            g.Clear(Color.FromArgb(PIX_WHITE, PIX_WHITE, PIX_WHITE));

            StringReader strReader = new StringReader(text);

            BdfFont bf  = BdfFont.getInstance();
            int     chX = picBW.Width / bf.Width;
            int     chY = picBW.Height / bf.Height;

            for (int yy = 0; yy < chY; yy++)
            {
                string lineText = Strings.StrConv(strReader.ReadLine(), VbStrConv.Wide);
                if (lineText == null)
                {
                    break;
                }
                int len = lineText.Length;
                if (len > chX)
                {
                    len = chX;
                }
                int count = 0;
                for (int xx = 0; xx < len; xx++)
                {
                    byte[] font = bf.getFontData(lineText[count]);
                    for (int y = 0; y < bf.Height; y++)
                    {
                        int mask  = 0x8000;
                        int xbyte = 2;                          //めんどくさいので横幅2byte限定
                        int xdata = font[xbyte * y] << 8 | font[xbyte * y + 1];
                        for (int x = 0; x < bf.Width; x++)
                        {
                            int pix = xdata & mask;
                            int bw;
                            if (pix == 0)
                            {
                                bw = PIX_WHITE;
                            }
                            else
                            {
                                bw = PIX_BLACK;
                            }
                            bm_bw.SetPixel(xx * bf.Width + x, yy * bf.Height + y, Color.FromArgb(bw, bw, bw));
                            mask >>= 1;
                        }
                    }
                    count++;
                }
            }
            return(bm_bw);
        }