TBitmap的一个问题
代码如下
try
{
Graphics::TBitmap * SourcePic = new Graphics::TBitmap();
Graphics::TBitmap * TempPic = new Graphics::TBitmap();
Graphics::TBitmap * DestPic = new Graphics::TBitmap();
TRect Rect,TempRect,DestRect;
TFileStream * JPEGFile = new TFileStream(SourceFile,fmOpenRead);
TJPEGImage *JPEGImage = new TJPEGImage();
JPEGImage->LoadFromStream(JPEGFile);
SourcePic->Assign(JPEGImage);
TempPic->PixelFormat = SourcePic->PixelFormat ;
DestPic->PixelFormat = SourcePic->PixelFormat ;
delete JPEGImage;
delete JPEGFile;
SourcePic->SaveToFile("C:\\1Source.bmp");//这里能够正常生成文件
GetBorderByChromatism(SourcePic, Rect);
GetCutRect(SourcePic, Rect);
SourcePic->SaveToFile("C:\\1SourceAgain.bmp");//这个文件也正常
TempPic->Width = Rect.Width();
TempPic->Height = Rect.Height();
TempRect.left = TempRect.top = 0;
TempRect.right = Rect.Width();
TempRect.bottom = Rect.Height();
TempPic->Canvas->CopyRect(TempRect,SourcePic->Canvas,Rect);
TempPic->SaveToFile("C:\\2Temp.bmp");//这个文件也正常
if( Rect.Width() > 1600 )
{
DestRect.right = 1600;
DestPic->Width = 1600;
DestRect.bottom = 1200;
DestPic->Height = 1200;
}
else if ( Rect.Width() > 1024 )
{
DestRect.right = 1024;
DestPic->Width = 1024;
DestRect.bottom = 768;
DestPic->Height = 768;
}
else
{
DestRect.right = 800;
DestPic->Width = 800;
DestRect.bottom = 600;
DestPic->Height = 600;
}
//画斜线
DestPic->Canvas->MoveTo(0,0);
DestPic->Canvas->LineTo(TempPic->Width-1, TempPic->Height-1);
DestPic->Canvas->StretchDraw(DestRect, TempPic);
TempPic->SaveToFile("C:\\2TempAgain.bmp");//这个文件也正常
DestPic->SaveToFile("C:\\3Dest.bmp"); //这个文件就是一条斜线,我StretchDraw或者CopyRect都不行,无论怎么都是生成一个空白的图片,上面只有一条斜线。
JPEGImage = new TJPEGImage();
JPEGImage->Assign(DestPic);
JPEGImage->SaveToFile(DestFile);
delete JPEGImage;
SourcePic->ReleaseHandle();
delete SourcePic;
delete TempPic ;
DestPic->FreeImage();
DestPic->ReleaseHandle();
delete DestPic ;
}
catch( Exception &e )
{
ShowMessage(e.Message);
}
return 0;