回 帖 发 新 帖 刷新版面

主题:抓屏的API函数

抓取屏幕后,能否保存为jpeg2000格式的图像,有没有API可以直接用的,那位大哥知道请告知,小弟感激不尽!!

回复列表 (共7个回复)

沙发

没API可以直接用

板凳

如果需要的话,我可以发给你一个使用API函数直接抓屏的源程序,需要什么格式自己修改,比较好用的,QQ247359282,或发邮件到:qiaoqu2008@sohu.com,前提是请我吃饭啊!

3 楼

忘了说了,我的是用C++Builder实现的

4 楼

谢谢乔枫兄

5 楼

为了让大家都能用,我把源码贴过来,并把全部程序发到你邮箱了!记得加分啊

//---------------------------------------------------------------------------
#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 楼

快点给我加分啊,要不以后不就不发了,那可都是我的心血啊

7 楼

看到加分了,程序在我这都很好用,如果有什么问题及时联系,我再修改

我来回复

您尚未登录,请登录后再回复。点此登录或注册