我在一个panel上用sharp做了些图形,那我想把整个 panel复制到剪贴版行吗?(35分)

  • 主题发起人 主题发起人 衫菜
  • 开始时间 开始时间

衫菜

Unregistered / Unconfirmed
GUEST, unregistred user!
这样方便到时候再把图形粘到OFFICE中去。
请问如何实现?
 
不可以,Panel是一个容器内的控件,如果要复制到WORD里,你最好自己定义一种
格式
 
把那一块抓图,再写到剪贴板?
 
对呀,就用它的canvas属性
 
那请问如何通过已知范围的canvas属性来复制图形呢?
 

图形显示在Image1中,你将它放在剪贴板中就行了。

//Joe
//******************
//下面的代码抓矩形:
function CaptureScreen(const Rect: TRect; const BitDepth: TPixelFormat =
pfDevice): TBitmap;
var
hDC: Windows.HDC;
hDesktop: THandle;
begin
// create and define the bitmap
Result := Graphics.TBitmap.Create;

try
case BitDepth of
pfCustom, pfDevice:
Result.PixelFormat := pfDevice;
else
Result.PixelFormat := BitDepth;
end;

Result.Width := Rect.Right - Rect.Left;
Result.Height := Rect.Bottom - Rect.Top;

hDesktop := GetDeskTopWindow();
hDC := GetDC(hDesktop);
try
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, hDC,
Rect.Left, Rect.Top, SRCCOPY);
finally
ReleaseDC(hDesktop, hDC);
end;

except
FreeAndNil(Result);
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
rect: TRect;

begin
rect.TopLeft := Panel1.ClientToScreen(Panel1.ClientRect.TopLeft);
rect.BottomRight := Panel1.ClientToScreen(Panel1.ClientRect.BottomRight);
bmp := CaptureScreen(rect);
Image1.Picture.Bitmap := bmp;
end;

 
考图片!!!到剪贴板
 
用键盘抓图
 
呵呵,衫菜MM真小气啊,分给我算了:
procedure TForm1.Button2Click(Sender: TObject);
var
bmp: TBitmap;
ACanvas: TCanvas;
ARect: TRect;
AFormat: Word;
AData: THandle;
APalette: HPALETTE;
begin
bmp := TBitmap.Create;
ACanvas := TCanvas.Create;
try
ACanvas.Handle := GetDC(Panel1.Handle);
ARect := Panel1.ClientRect;
bmp.Width := ARect.Right - ARect.Left;
bmp.Height := ARect.Bottom - ARect.Top;
bmp.Canvas.CopyRect(bmp.Canvas.ClipRect,ACanvas,ARect);
bmp.SaveToClipboardFormat(AFormat,AData,APalette);
Clipboard.SetAsHandle(AFormat,AData);//复制到剪贴板
Canvas.Draw(0,0,bmp);//在窗体上画出来,可以注释掉
finally
bmp.Free;
ACanvas.Free;
end;
end;
 
[:)]

给版主教训了一下,现在衫菜是DFW里的乖乖女了。

——真是可惜!
 
谢谢大家,我在试验

to pyzfl:
我胆子小啊[:)]
 
头痛,PrintKey算了.我又有了一幅我随时可用的图片了!
 
谢就一个字!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部