菜鸟紧急求助:关于一个画图的问题
是这样的,我需要画一个图,想搞成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)