1,221
社区成员
发帖
与我相关
我的任务
分享
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->LoadFromFile("D:\\ccrun\\123.bmp");
Canvas->Draw(0, 0, bmp);
delete bmp;
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HDC hdc=GetDC(Form1->Handle);
HDC pDC=CreateCompatibleDC(hdc);
//前景图
HBITMAP actbit=(HBITMAP)LoadImage(NULL,"C:\\023.bmp",IMAGE_BITMAP,336,252,LR_LOADFROMFILE);
SelectObject(pDC,actbit);
BitBlt(hdc,0,0,336,252,pDC,0,0,SRCCOPY);
ReleaseDC(Form1->Handle,hdc);
DeleteDC(pDC);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
BOOL __stdcall CrnDrawBitmapToHDC(LPCTSTR lpBmpFile, HDC hdc)
{
HBITMAP hBmp = (HBITMAP)::LoadImage(
0,
lpBmpFile,
IMAGE_BITMAP,
0,
0,
LR_CREATEDIBSECTION | LR_LOADFROMFILE);
BITMAP bmp;
::GetObject(hBmp, sizeof(BITMAP), (LPVOID) &bmp);
int nColors = (1 << bmp.bmBitsPixel);
if (nColors > 256)
nColors = 0;
int nSizeInfo = sizeof(BITMAPINFO) + (nColors * sizeof(RGBQUAD));
LPBITMAPINFO lpBmpInfo = (LPBITMAPINFO)::GlobalAlloc(GMEM_FIXED, nSizeInfo);
lpBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpBmpInfo->bmiHeader.biWidth = bmp.bmWidth;
lpBmpInfo->bmiHeader.biHeight = bmp.bmHeight;
lpBmpInfo->bmiHeader.biPlanes = 1;
lpBmpInfo->bmiHeader.biBitCount = bmp.bmBitsPixel * bmp.bmPlanes;
lpBmpInfo->bmiHeader.biCompression = BI_RGB;
lpBmpInfo->bmiHeader.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight;
lpBmpInfo->bmiHeader.biXPelsPerMeter = 0;
lpBmpInfo->bmiHeader.biYPelsPerMeter = 0;
lpBmpInfo->bmiHeader.biClrUsed = 0;
lpBmpInfo->bmiHeader.biClrImportant = 0;
RGBQUAD rgb[256];
if (nColors <= 256)
{
HDC hMemDC = ::CreateCompatibleDC(NULL);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hMemDC, hBmp);
::GetDIBColorTable(hMemDC, 0, nColors, rgb);
for (int i = 0; i < nColors; ++i)
{
lpBmpInfo->bmiColors[i].rgbRed = rgb[i].rgbRed;
lpBmpInfo->bmiColors[i].rgbGreen = rgb[i].rgbGreen;
lpBmpInfo->bmiColors[i].rgbBlue = rgb[i].rgbBlue;
}
::SelectObject(hMemDC, hOldBitmap);
::DeleteDC(hMemDC);
}
::StretchDIBits(hdc,
0,
0,
bmp.bmWidth,
bmp.bmHeight,
0,
0,
bmp.bmWidth,
bmp.bmHeight,
bmp.bmBits,
lpBmpInfo,
DIB_RGB_COLORS,
SRCCOPY);
::DeleteObject(hBmp);
::GlobalFree(lpBmpInfo);
return TRUE;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCHAR szBmpFile[] = TEXT("D:\\ccrun\\222.bmp");
if (FileExists(szBmpFile))
{
HDC hdc = ::GetDC(Handle);
CrnDrawBitmapToHDC(szBmpFile, hdc);
::ReleaseDC(Handle, hdc);
}
else
{
ShowMessage("指定的位图文件木有找到!");
}
}