M
macerate
Unregistered / Unconfirmed
GUEST, unregistred user!
我想用Delphi制作一个可以看JPEG的DLL库,让VC调用,下面是一个export出的函数:
function LoadJPEG(const FileName: PChar): HBITMAP
var
Jpeg: TJpegImage;
Bitmap: TBitmap;
begin
Result := 0;
Jpeg := TJpegImage.Create;
Bitmap := TBitmap.Create;
try
try
Jpeg.LoadFromFile(FileName);
Bitmap.Assign(Jpeg);
Result := Bitmap.ReleaseHandle;
except
end;
finally
Bitmap.Free;
Jpeg.Free;
end;
end;
1.我在程序中希望载入JPEG文件,返回HBITMAP。现在我用的是ReleaseHandle过程,请问这样
返回的HBITMAP是DIB还是DDB的句柄?如果我要强制其变为DIB句柄或者DDB句柄,应当怎么做?
2. 另外在帮助中看到一堆Dormant, FreeImage, Handle的说明,不太理解其含义,何时应当
调用Dormant,FreeImage?
3. 还有,在FreeImage的帮助中说:执行FreeImage后,原图象从DDB变成了DIB,并且原来的颜色
深度信息都丢失了。但是我以前一直理解为图象从DIB转换为DDB时图象颜色深度信息才会丢失啊?
4. TBitmap.Handle能否被赋值,赋值以后原TBitmap中的内容是否自动释放了?
5. 在我的VC程序中调用上述函数得到的HBITMAP,是否需要在VC中加以释放?
function LoadJPEG(const FileName: PChar): HBITMAP
var
Jpeg: TJpegImage;
Bitmap: TBitmap;
begin
Result := 0;
Jpeg := TJpegImage.Create;
Bitmap := TBitmap.Create;
try
try
Jpeg.LoadFromFile(FileName);
Bitmap.Assign(Jpeg);
Result := Bitmap.ReleaseHandle;
except
end;
finally
Bitmap.Free;
Jpeg.Free;
end;
end;
1.我在程序中希望载入JPEG文件,返回HBITMAP。现在我用的是ReleaseHandle过程,请问这样
返回的HBITMAP是DIB还是DDB的句柄?如果我要强制其变为DIB句柄或者DDB句柄,应当怎么做?
2. 另外在帮助中看到一堆Dormant, FreeImage, Handle的说明,不太理解其含义,何时应当
调用Dormant,FreeImage?
3. 还有,在FreeImage的帮助中说:执行FreeImage后,原图象从DDB变成了DIB,并且原来的颜色
深度信息都丢失了。但是我以前一直理解为图象从DIB转换为DDB时图象颜色深度信息才会丢失啊?
4. TBitmap.Handle能否被赋值,赋值以后原TBitmap中的内容是否自动释放了?
5. 在我的VC程序中调用上述函数得到的HBITMAP,是否需要在VC中加以释放?