我想用VC6.0做一个LCD图生成程序(也是我学习VC的目的,不想学VB或其它)类似常
见的字模版生成十六进制数(HEX),用在单片机对LCD显示屏的输入,这样就不需通
过点图计算去获得单片机对LCD显示屏的输入的数据。常见的字模版生成十六进制数,
不能获得我想要的对LCD屏显示的数据,因为屏要常换,点图工作量实在太大且容易错,请大侠们相助或提供这方面学习资料的信息!!

解决方案 »

  1.   

    TO wuxq:
    能交流下吗?或给点思路。
    做过的朋友请帮助下,分不够加
      

  2.   

    bcb下生成16x16点阵字库
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Graphics::TBitmap *pBitmap = new Graphics::TBitmap;
    pBitmap->Width = 16;
    pBitmap->Height = 16;
    pBitmap->PixelFormat = pf8bit;
    pBitmap->Canvas->Font->Name = "宋体";
    pBitmap->Canvas->Font->Charset = GB2312_CHARSET;
    pBitmap->Canvas->Font->Size = 12;
    int k;
    char buf[3];
    buf[2] = 0;
    AnsiString str;
    AnsiString strHex; TFileStream *fs = new TFileStream("e:\\gb2312_16.h", fmCreate);
    str = "const unsigned char GB2312_CHINESE[] = {\r\n";
    fs->Write(str.c_str(), str.Length());
    // for (int i = 0x81; i <= 0xfe; i++)
    // for (int i = 0xb0; i <= 0xf7; i++)
    for (int i = 0xb0; i <= 0xd7; i++)
    {
    buf[0] = i;
    k = 0;
    // for (int j = 0x40; j <= 0xfe; j++, k++)
    for (int j = 0xa1; j <= 0xfe; j++, k++)
    {
    if (j == 0x7f)
    {
    continue;
    }
    str = "";
    buf[1] = j;
    pBitmap->Canvas->TextOutA(0, 0, buf);
    for (int m = 0; m < pBitmap->Width; m++)
    {
    WORD nZm = 0;
    for (int n = 0; n < pBitmap->Height; n++)
    {
    Byte *p = (Byte*)pBitmap->ScanLine[n];
    if (p[m] == 0)
    {
    nZm |= 1 << n;
    }
    }
    strHex.sprintf("0x%02X,0x%02X,", nZm & 0xff, nZm >> 8);
    str += strHex;
    }
    str += "\r\n";
    fs->Write(str.c_str(), str.Length());
    Canvas->Draw((k % 16) * 16, (k / 16) * 16, pBitmap);
    }
    // Sleep(1000);
    }
    str = "};\r\n";
    fs->Write(str.c_str(), str.Length());
    delete fs;
    delete pBitmap;
    }
      

  3.   

    TO wuxq谢谢你!
    做过的朋友请帮助!