CScan_Bitmap = new Graphics::TBitmap();
CScan_Bitmap->Height = TmpNum*2;
CScan_Bitmap->Width = ScanPts*2;
ImagePK->Width = ScanPts*2;
ImagePK->Height = TmpNum*2;
ImagePK->Bitmap->Width = ScanPts*2; //ScanPts*2;
ImagePK->Bitmap->Height = TmpNum*2;
MyRect = Rect(0, 0, ScanPts*2, TmpNum*2);
double colorVal = 0;
short *TmpPk_DB = new short[Points*ScanPts];
short *peakAbsVal = new short[ScanPts];
for(k=0; k < TmpNum; k++)
{
AnsiString fileName = "D:\\111\\222_Ch2_part" + IntToStr(k) + ".tmp";
TFileStream *TmpOpen = new TFileStream(fileName.c_str(), fmOpenRead);
TmpOpen->Seek(HeadData, soFromBeginning);
memset(TmpPk_DB, 0, sizeof(short)*Points*ScanPts);
TmpOpen->Read(TmpPk_DB, sizeof(short)*Points*ScanPts);
delete TmpOpen;
for(i=0; i 4096)
TmpPk_DB[i] = 4096;
TmpPk_DB[i] = TmpPk_DB[i]-2048;
}
memset(peakAbsVal, -2048, sizeof(short)*ScanPts);
for(j= 0; j < ScanPts; j++)
{
for(i=500; i peakAbsVal[j])
{
peakAbsVal[j] = TmpPk_DB[(j*Points)+i];
}
}
}
for(i = 0 ; i < ScanPts; i++)
{
colorVal = 256*peakAbsVal[i]/2048.0;
for(int j=k*2 ; j < (k+1)*2; j++)
CScan_Bitmap->Canvas->Pixels[i][j] = colorJet[(int)colorVal];
//ImagePK->Canvas->Pixels[i][j] = colorJet[(int)colorVal];
}
}
ImagePK->Canvas->CopyRect(MyRect, CScan_Bitmap->Canvas, MyRect);
delete [] peakAbsVal;
peakAbsVal = NULL;
delete [] TmpPk_DB;
TmpPk_DB = NULL;
소스입니다. 이렇게 해서 데이터를 bitmap에 그린후 bitmap에 그려진 이미지를 copyrect 하는건데요.
주석처리해놓은 픽셀찍는걸 먼저했다가 제 사수께서 bitmap에 부분별로 그린 후 다 그려진걸 이미지로 옮기라 하셔서
바꾼겁니다.
문제는 버튼 클릭하면 이미지를 그리고는 곧바로 검은색 배경으로 바뀝니다. 초기화해버리는게 아닌가 싶긴한데...
formclose에도 다른 부분을 작성한 적은 없는데...이상합니다.
2번째 클릭하면 이미지가 제대로 나옵니다. 탭 안에 그려넣었는데 탭을 변경했다 돌아오면 다시 이미지는 초기화...
이유를 알려주세요 ;ㅁ;
|