主题:抓屏的API函数
xin5439
[专家分:570] 发布于 2006-02-17 09:51:00
抓取屏幕后,能否保存为jpeg2000格式的图像,有没有API可以直接用的,那位大哥知道请告知,小弟感激不尽!!
回复列表 (共7个回复)
沙发
vrace [专家分:3590] 发布于 2006-02-18 20:48:00
没API可以直接用
板凳
北乔枫 [专家分:170] 发布于 2006-03-28 20:25:00
如果需要的话,我可以发给你一个使用API函数直接抓屏的源程序,需要什么格式自己修改,比较好用的,QQ247359282,或发邮件到:qiaoqu2008@sohu.com,前提是请我吃饭啊!
3 楼
北乔枫 [专家分:170] 发布于 2006-03-28 20:26:00
忘了说了,我的是用C++Builder实现的
4 楼
xin5439 [专家分:570] 发布于 2006-03-29 12:25:00
谢谢乔枫兄
5 楼
北乔枫 [专家分:170] 发布于 2006-03-30 17:33:00
为了让大家都能用,我把源码贴过来,并把全部程序发到你邮箱了!记得加分啊
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//建立一暂时图文件
Graphics::TBitmap *Bitmap=new Graphics::TBitmap;
//设置这暂时图文件属性
Bitmap->Width=Screen->Width;
Bitmap->Height=Screen->Height;
Bitmap->PixelFormat=pf16bit;
//取得桌面的DC handle
HDC NewDC=::GetWindowDC(0);
//将全屏幕复制到Bitmap上
::BitBlt(Bitmap->Canvas->Handle,0,0,
Screen->Width,Screen->Height,
NewDC,0,0,SRCCOPY);
//让user决定结果
char *str = "YES按钮=显示在Form1上,\nNO按钮=存成文件C:\\NewBitmap.BMP,\nCANCEL按钮=Do Nothing!";
int re = ::MessageBox(Handle, str, "存档or显示",MB_YESNOCANCEL);
switch(re)
{
case IDYES:
Image1->Picture->Assign(Bitmap);
break;
case IDNO:
Bitmap->SaveToFile("C:\\NewBitmap.BMP");
break;
case IDCANCEL:
break;
}
//释放DC
ReleaseDC(Form1->Handle,NewDC);
//删除Bitmap
delete Bitmap;
}
//---------------------------------------------------------------------------
6 楼
北乔枫 [专家分:170] 发布于 2006-03-30 17:46:00
快点给我加分啊,要不以后不就不发了,那可都是我的心血啊
7 楼
北乔枫 [专家分:170] 发布于 2006-03-31 12:56:00
看到加分了,程序在我这都很好用,如果有什么问题及时联系,我再修改
我来回复