首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

搞不太懂,TBITMAP 的 SCANLINE 不起作用了。该怎么解决

2012-03-09 
搞不太懂,TBITMAP 的 SCANLINE 不起作用了。。。C/C++ codeGraphics::TBitmap *bmpChar[12]int len,chrWid,c

搞不太懂,TBITMAP 的 SCANLINE 不起作用了。。。

C/C++ code
      Graphics::TBitmap *bmpChar[12];      int len,chrWid,chrHei,drawpos(0);      len=9;      chrWid=10;      chrHei=10;      int i;      for(i=0;i<len;i++)      {            if(i+1>len)            {                  break;            }            bmpChar[i]=new Graphics::TBitmap();            bmpChar[i]->PixelFormat=pf24bit;            bmpChar[i]->Width=chrWid;            bmpChar[i]->Height=chrHei;            bmpChar[i]->Canvas->Brush->Color=clBlack;            bmpChar[i]->Canvas->Font->Color=clWhite;            bmpChar[i]->Canvas->Font->Handle=hFont;            bmpChar[i]->Canvas->TextOutA(0,0,strName.SubString(i+1,1)); //如果这里输出文字,下面的 p 就始终是 0            //bmpChar[i]->Assign(Image3->Picture->Bitmap); //如果使用这一句,下面的 p 就正常了,Image3里面是在设计阶段读入的一张图片             BYTE *p;            p=(BYTE*)bmpChar[i]->ScanLine[0]; //这里的 p 始终,得不到正确的地址,始终是 0。。。。      }


[解决办法]
用你的代码稍微试了一下,在BCB6下可以正确得到结果啊。
 
C/C++ code
       Graphics::TBitmap *bmpChar=new Graphics::TBitmap();        bmpChar->PixelFormat=pf24bit;        bmpChar->Width=10;        bmpChar->Height=10;        bmpChar->Canvas->Brush->Color=clBlack;        bmpChar->Canvas->Font->Color=clWhite;        //bmpChar->Canvas->Font->Handle=hFont;        bmpChar->Canvas->TextOutA(0,0,"Hello"); //如果这里输出文字,下面的 p 就始终是 0???        //bmpChar->Assign(Image3->Picture->Bitmap); //如果使用这一句,下面的 p 就正常了,Image3里面是在设计阶段读入的一张图片        BYTE *p;        p=(BYTE*)bmpChar->ScanLine[5]; //正确~~        String s;        for(int i=0; i<30; i++)        {            s = s + IntToHex(p[i],2) + " ";        }        Memo1->Text = s;
[解决办法]
C/C++ code
      for(i=0;i<bmp->Height;i++)      {            for(j=0;j<bmp->Width;j++)            {                  if(*(p+i*line+j*3)==255)                  {                        this->Canvas->TextOutA(j*(wid+5),i*hei,"1");                  }                  else if(*(p+i*line+j*3)==0)                  {                        this->Canvas->TextOutA(j*(wid+5),i*hei,"0");                  }            }      } 

热点排行