有点难 在panel上放了很多的图片控件显示图片,想把panel显示的所有内容抓成一张图显示在一个image里该怎样做,更难点的, 可以选择想要抓的域区保存为图片(选的时候出现一个虚线拉框)分不够可以加. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该不难,利用PANEL的句柄,没做过! 可以阿,直接用1 屏幕拷贝到剪接区,然后读出2 或者用DC的bitblt创建一张一样的Bmp然后再付给image 第一题procedure TForm1.Button1Click(Sender: TObject);begin Image1.Width := Panel1.Width; Image1.Height := Panel1.Height; BitBlt(Image1.Canvas.Handle, 0, 0, Panel1.Width, Panel1.Height, Form1.Canvas.Handle, Panel1.Left, Panel1.Top, SRCCOPY);end; 第二题 画虚框的代码我懒得写了,用GetCursorPos函数取鼠标位置(这是屏幕坐标), 然后用ScreenToClient和ClientToParent转换一下坐标 改变BitBlt的参数,就行了 to ronaldli(木的) 问题难在这里了,画虚框选择怎样做,谢谢 试一下吧!var dc: hdc; Mycan: Tcanvas; R: TRect; Mybmp:TBitmap; p, CP:TPoint ;begin Mybmp := Tbitmap.Create; {建立BMPMAP } Mycan := TCanvas.Create; {屏幕截取} dc := GetWindowDC(0); try p.x:= Panel1.Left; p.y:= Panel1.Top; CP:= ClientToScreen(p); Mycan.Handle := dc; R := Rect(CP.x,CP.y,CP.x+Panel1.Width,CP.y+Panel1.Height); Mybmp.Width := Panel1.Width; Mybmp.Height := Panel1.Height; Mybmp.Canvas.CopyRect(Mybmp.Canvas.ClipRect,Mycan,R); if savedialog1.Execute then mybmp.SaveToFile(savedialog1.filename+'.bmp'); finally releaseDC(0, DC); mycan.Free; mybmp.Free; end;end; 当from的Enabled为false时不能改变Cursor? ePass1000ND官方例子的一个问题 一个关于字符串的小问题请大侠帮忙。 关于在ShellTreeView中获取选中文件夹中所有文件绝对路径的问题。 dbgrideh怎样显示超过长度的部分 怎么返回某个字符在字符串中出现的位置? 怎样在DBGRID相对应的字段中嵌入如下的控件 dbcombobox1 DBLookUpComboBox DBmemo,只要提代码都给分 怎样在桌面上写字 如何利用ECP断口来进行双机快速传递文件??? DELPHI字符串操作问题! 初学者的问题 软件外包应注意哪些问题?
1 屏幕拷贝到剪接区,然后读出
2 或者用DC的bitblt创建一张一样的Bmp
然后再付给image
begin
Image1.Width := Panel1.Width;
Image1.Height := Panel1.Height;
BitBlt(Image1.Canvas.Handle,
0,
0,
Panel1.Width,
Panel1.Height,
Form1.Canvas.Handle,
Panel1.Left,
Panel1.Top,
SRCCOPY);
end;
然后用ScreenToClient和ClientToParent转换一下坐标
改变BitBlt的参数,就行了
var
dc: hdc;
Mycan: Tcanvas;
R: TRect;
Mybmp:TBitmap;
p, CP:TPoint ;
begin
Mybmp := Tbitmap.Create; {建立BMPMAP }
Mycan := TCanvas.Create; {屏幕截取}
dc := GetWindowDC(0); try
p.x:= Panel1.Left;
p.y:= Panel1.Top;
CP:= ClientToScreen(p); Mycan.Handle := dc;
R := Rect(CP.x,CP.y,CP.x+Panel1.Width,CP.y+Panel1.Height);
Mybmp.Width := Panel1.Width;
Mybmp.Height := Panel1.Height;
Mybmp.Canvas.CopyRect(Mybmp.Canvas.ClipRect,Mycan,R);
if savedialog1.Execute then
mybmp.SaveToFile(savedialog1.filename+'.bmp');
finally
releaseDC(0, DC);
mycan.Free;
mybmp.Free;
end;
end;