TCanvas *dtCanvas = new TCanvas;
dtCanvas->Handle=GetDC(0);
Graphics::TBitmap *bitmap=new Graphics::TBitmap;
bitmap->Width=Width;
bitmap->Height=Height;
int nColors=GetDeviceCaps(Canvas->Handle,SIZEPALETTE);
LOGPALETTE* logPal=(LOGPALETTE*)new Byte[sizeof(LOGPALETTE)+(nColors-1)*sizeof(PALETTEENTRY)];
logPal->palVersion=0x300; logPal->palNumEntries=(Word)nColors;
GetSystemPaletteEntries(Canvas->Handle,0,nColors,logPal->palPalEntry);
bitmap->Palette=CreatePalette(logPal);
delete[] logPal;
TRect src=BoundsRect;
TRect dest=Rect(0,0,Width,Height);
bitmap->Canvas->CopyRect(dest,dtCanvas,src);
bitmap->SaveToFile("Screen.bmp");
delete bitmap;
delete dtCanvas;
dtCanvas->Handle=GetDC(0);
Graphics::TBitmap *bitmap=new Graphics::TBitmap;
bitmap->Width=Width;
bitmap->Height=Height;
int nColors=GetDeviceCaps(Canvas->Handle,SIZEPALETTE);
LOGPALETTE* logPal=(LOGPALETTE*)new Byte[sizeof(LOGPALETTE)+(nColors-1)*sizeof(PALETTEENTRY)];
logPal->palVersion=0x300; logPal->palNumEntries=(Word)nColors;
GetSystemPaletteEntries(Canvas->Handle,0,nColors,logPal->palPalEntry);
bitmap->Palette=CreatePalette(logPal);
delete[] logPal;
TRect src=BoundsRect;
TRect dest=Rect(0,0,Width,Height);
bitmap->Canvas->CopyRect(dest,dtCanvas,src);
bitmap->SaveToFile("Screen.bmp");
delete bitmap;
delete dtCanvas;
本文介绍了一个使用 C++ 实现的屏幕截图程序。该程序通过创建位图并利用设备上下文 (DC) 技术捕获屏幕内容,最终将截图保存为 BMP 文件。文章详细展示了从初始化画布到设置调色板并进行像素复制的全过程。
4497

被折叠的 条评论
为什么被折叠?



