新人求助啊!关于bmp文件问题 ( 积分: 100 )

  • 主题发起人 主题发起人 kenshinee
  • 开始时间 开始时间
K

kenshinee

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我是刚刚才接触delphi不久的新手,现在编程遇到了一些问题,希望各位高手不吝赐教啊,谢谢大家了!
程序主旨是这样的:
1、建立临时的bmp文件 -〉 2、将屏幕拷贝到剪贴板 -〉 3、打开文件并将剪贴板内容贴入-〉 4、保存并关闭文件 -〉 5、删除临时文件
其中1、2、5的部分我做的可以运行了,其他部分我查了资料也没有想法,请大家帮帮我啊,谢谢了!

下面是我做出来的程序部分:
var
hDIB:HWND;
size:DWORD;
lpbuf:LPBYTE;
FileHandle:Integer;
begin
//创建临时文件夹和临时文件
DirectoryExists('e:/pictures/');
if (DirectoryExists('e:/pictures/') <> true) then
CreateDir('e:/pictures/')
else
begin
if (FileExists('E:/pictures/usefordelete.bmp') <> true) then
FileCreate('E:/pictures/usefordelete.bmp')
else DeleteFile('E:/pictures/usefordelete.bmp');
FileCreate('E:/pictures/usefordelete.bmp');
end;

//拷贝屏幕到剪贴板
if( OpenClipboard(dlhwnd) ) then
begin
if(lpbi.biClrUsed = 256) then
size:=1024
else
size:=0;
if ((lpbi.biBitCount = 16) or (lpbi.biBitCount = 32)) then size:=size+3 * sizeof(DWORD);
size:=size+lpbi.biSize+lpbi.biSizeImage;

hDIB:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, size);
lpbuf:=GlobalLock(hDIB);
CopyMemory(lpbuf, lpbi, size-lpbi.biSizeImage);
CopyMemory(LPSTR(lpbuf)+size-lpbi.biSizeImage,lpdib,lpbi.biSizeImage);
GlobalUnlock(hDIB);
SetClipboardData(CF_DIB,hDIB);
CloseClipboard();
end;

// 删除临时文件和临时文件夹
// DeleteFile('e:/pictures/usefordelete.bmp');
// RemoveDir('e:/pictures');
end;
 
大家好,我是刚刚才接触delphi不久的新手,现在编程遇到了一些问题,希望各位高手不吝赐教啊,谢谢大家了!
程序主旨是这样的:
1、建立临时的bmp文件 -〉 2、将屏幕拷贝到剪贴板 -〉 3、打开文件并将剪贴板内容贴入-〉 4、保存并关闭文件 -〉 5、删除临时文件
其中1、2、5的部分我做的可以运行了,其他部分我查了资料也没有想法,请大家帮帮我啊,谢谢了!

下面是我做出来的程序部分:
var
hDIB:HWND;
size:DWORD;
lpbuf:LPBYTE;
FileHandle:Integer;
begin
//创建临时文件夹和临时文件
DirectoryExists('e:/pictures/');
if (DirectoryExists('e:/pictures/') <> true) then
CreateDir('e:/pictures/')
else
begin
if (FileExists('E:/pictures/usefordelete.bmp') <> true) then
FileCreate('E:/pictures/usefordelete.bmp')
else DeleteFile('E:/pictures/usefordelete.bmp');
FileCreate('E:/pictures/usefordelete.bmp');
end;

//拷贝屏幕到剪贴板
if( OpenClipboard(dlhwnd) ) then
begin
if(lpbi.biClrUsed = 256) then
size:=1024
else
size:=0;
if ((lpbi.biBitCount = 16) or (lpbi.biBitCount = 32)) then size:=size+3 * sizeof(DWORD);
size:=size+lpbi.biSize+lpbi.biSizeImage;

hDIB:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, size);
lpbuf:=GlobalLock(hDIB);
CopyMemory(lpbuf, lpbi, size-lpbi.biSizeImage);
CopyMemory(LPSTR(lpbuf)+size-lpbi.biSizeImage,lpdib,lpbi.biSizeImage);
GlobalUnlock(hDIB);
SetClipboardData(CF_DIB,hDIB);
CloseClipboard();
end;

// 删除临时文件和临时文件夹
// DeleteFile('e:/pictures/usefordelete.bmp');
// RemoveDir('e:/pictures');
end;
 
直接把剪贴板的内容以流的形式存入bmp文件,好像不用第4步就可以了
 
看错了,你是要把图片插入其它文档里阿,那就不太清楚了,如果直接保存为bmp图像应该是不难的
 
啊?那怎么直接保存为bmp文件呢?[?]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
697
import
I
后退
顶部