急,Image1.Picture.Assign(Clipboard)的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 HSB_YQ
  • 开始时间 开始时间
H

HSB_YQ

Unregistered / Unconfirmed
GUEST, unregistred user!
Image1.Picture.Assign(Clipboard);显示出来的图片,为什么不是放大了就是缩小了,我想要原样大小?我试过从画图板复制的图片,出来是缩小,从WORD文档里出来的是放大了,为什么呢,怎么才能得原大小。
 
把Image1控件的属性设置一下,再把这个控件设置大一点。
 
不是设置的吧,Image1.AutoSize := True; Image1.Stretch := Flase;,我都已经设过这几个了,很奇怪啊,我用的是Delphi2006,当Clipboard里的内容是CF_Picture和CF_Txt就变大6倍多了,CF_Bitmap就变小,郁闷啊
 
Image1.AutoSize := Flase; Image1.Stretch := Flase
 
Image1.AutoSize := Flase;不是问题所在,只是显示区域的问题,不会放大或缩小的
 
uses Clipbrd;
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Assign(Clipboard);
end;
各位可以用这个试一下,先运行了,然后打开画图,随便画什么然后复制,然后点Button1,看看效果,接着打开一个WORD文档,复制某个东西(文字或图片),再点Button1看看效果,反正我的是能显示,只是前者变小了,后者变大了。
 
恩,确实不一样大小,估计和Image没什么关系,可能和图片的数据或者色彩位数有关。
 
我刚自己做了个,已试过,没问题,运行ok
你要看看帮助
Image1.AutoSize := Flase; Image1.Stretch := false;
Image1.proportional:= false;

uses Clipbrd;
procedure TForm1.Button1Click(Sender: TObject);
var
aBitmap: TBitmap;
begin
aBitmap:= TBitmap.Create;
aBitmap.LoadFromFile('D:/pic/张怡然宁静/abc.bmp');
Clipboard.Assign(aBitmap);
Image1.Picture.Assign(Clipboard);
aBitmap.Free;
end;
 
楼上lisongmagic的确实是可以的,你那种做法可以我也是知道,我想知道的是我那种做法为什么不得的原因。也正是你的那种可以,而我说的那种方法不行,才让我奇怪啊。nicai_wgl说的我也想过,估计是图片数据丢失了。其实我要做的很简单,就是把WORD文档转成图片,就发现了这个情况。我不喜欢装虚拟打印机,又想不出好办法。但很奇怪,如果同样的做法,在WORD里复制(表格图片都行),然后用WINDOWS的画图板粘贴却可以原样大小。
 
你先把剪贴板里的东西写到内存流里面,再用image读取流.
 
owen121先谢谢你,我试了下你说的方法,测试时在Image1.Picture.Graphic.LoadFromStream(s);里就出错了,估计是流的问题,你能帮我试一下吗,我比较菜找不到原因。
 
多人接受答案了。
 
后退
顶部