想用GDI+做一个远程桌面,有几个问题要主教大家:1、用截屏函数BitBlt(bitmap.Canvas.Handle,0,0,scrW,scrH,GetWindowDC(GetDesktopWindow()),0,0,SRCCOPY );
只能放在TBitMap对象中,能不能直接TGPImage,如果不能直接,那要什么方法才能把截到的图放到TGPImage中2、TGPImage保存成流是IStream格式,如何才能转成TMemoryStream格式。谢谢
只能放在TBitMap对象中,能不能直接TGPImage,如果不能直接,那要什么方法才能把截到的图放到TGPImage中2、TGPImage保存成流是IStream格式,如何才能转成TMemoryStream格式。谢谢
var bitmap : tbitmap;
gpbitmap : tgpbitmap;
begin
gpbitmap := tgpbitmap.create(bitmap.handle,0);
end;2.
var Adapter : Istream;
bmp : tgpbitmap;
bitmap : tbitmap;
bmp := TGpBitmap.Create(Adapter);
bitmap := tbitmap.create;
bitmap.handle := bmp.GetHBITMAP(0);
freeandnil(bmp);
BitBlt(TGPImage对象???,0,0,scrW,scrH,GetWindowDC(GetDesktopWindow()),0,0,SRCCOPY );
这句提示出错
[Error] main.pas(88): Not enough actual parameters而且这句是TGPBitmap对象bmp里如果已经有上面得到的数据,那还Create?
var Adapter : Istream;
bmp : tgpbitmap;
bitmap : tbitmap;
bmp := TGpBitmap.Create(Adapter);
这里只是示范istream如何转换为tgpbitmap再将tgpbitmap转换tmemorystream,
直接创建内存流,将tgpbitmap锁定,拷贝内存,解锁,就可以了
GetThumbnailImage(48, 60, nil, nil);
但它又要求是TGPImage对象才行?怎么办
TGpGraphics.SetTransform
多查下资料吧
已经Istream的转换。想转换成TMemoryStream 在一楼代码中 加上var ms:TMemoryStream ;
Adapter:= TStreamAdapter.Create(Ms);