读书人

初学者:关于一个画图的有关问题

发布时间: 2012-08-13 13:21:53 作者: rapoo

菜鸟紧急求助:关于一个画图的问题
是这样的,我需要画一个图,想搞成Bitmap图,图中的每一个像素都是根据接收信号不同的强度来设置颜色的,
我想用Canvas->Pixels函数来实现,为什么没有任何效果呢?

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Graphics::TBitmap *BG;
BG=new Graphics::TBitmap();
BG->Height=1024;
BG->Width=1024;

for(int i=0;i<=1024;i++)
{
for(int j=0;j<=100;j++)
{
BG->Canvas->Pixels[512][i]=clRed;
}
}
PaintBox1->Canvas->Draw(0,0,BG);

为什么这个图总是画不上呀?

还有,画好了了这个图怎么保存成图像格式放在电脑上呢?
我要生成1024*1024像素的图,但是在电脑上不需要显示这么大,又怎么处理呢?



菜鸟倾家荡产求解决呀


[解决办法]
总的来说,你是希望按照图像中的每个点来显示最终的图像?
[解决办法]
在 Canvas 中, 画点时, 和画刷以及画笔有关。 通过画刷,先把背景矩形区域填充为白色, 然后设置画笔的颜色, 然后使用画点方法, 画出某个点。

连续把你所有的点,画出来,图像就画出来了
[解决办法]
http://www.ccrun.com/view.asp?id=357
自己看看,应该能解决你的问题
[解决办法]
非常抱歉,目前我站上的下载资源已全部停了,准备进行改版。
[解决办法]

C/C++ code
void __fastcall TXXForm::PaintBox1Paint(TObject *Sender){    Graphics::TBitmap *BG;    BG=new Graphics::TBitmap();    BG->PixelFormat = TPixelFormat::pf32bit;    BG->Height=100;    BG->Width=1024;    BYTE *pLine = NULL;    int nPixelLen = 32/8;    for(int i=0;i<BG->Height;i++)    {        pLine = (BYTE*)BG->ScanLine[i];        for(int j=0;j<BG->Width;j++)        {          *(pLine + j * nPixelLen + 0) = 0;         // B          *(pLine + j * nPixelLen + 1) = 0;        // G          *(pLine + j * nPixelLen + 2) = 255;        // R        }    }    ((TPaintBox*)Sender)->Canvas->Draw(0,0,BG);    //if(NeedSave) 如果要保存    //{    //    BG->SaveToFile("./xxx/fielnameXX.bmp");    //}    if(BG != NULL)        delete BG, BG = NULL;}
[解决办法]
设置RGB颜色分量啊,这里是红色 ,等同于RGB(0xFF, 0x00, 0x00)

读书人网 >C++ Builder

热点推荐