有关使用ScrollBar1控制图像拉动的问题???80分求购(80分)

  • 主题发起人 主题发起人 supermikelili
  • 开始时间 开始时间
S

supermikelili

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Image1来装位图,image1属性如下:
autosize:=false;
transparent:=false;
我想实现以下效果:
当图太大时,可以用scrollbar1拉动来看??
我在放置了两个scrollbar,
怎么实现,给段代码??

 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ExtDlgs, StdCtrls;

type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Button1: TButton;
OpenPictureDialog1: TOpenPictureDialog;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
ScrollBox1.Align:=alClient;
Image1.AutoSize:=True;
Image1.Left:=0;
Image1.Top:=0
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName)
end;

end.
 
没必要代码!放一个ScrollBox,AutoScoll:=True,在ScrollBox再放Image1,Image1.AutoSize:=True即可
 
我要的就像一篇文单太长了,在记事本里看不完,
然后就拉动两边的滚动条来看,这样的效果??
 
ScrollBox里放Image

然后Scrollbox的大小固定,Image的大小随着内容而变化,滚动条就自己出来了


 
如果用代码怎么实现??
 
代码?属性控制就可以了啦```
 
我想求购的是用scroll来控制image1
 
有哪位能给段代码啊
 
无人知吗??
 
无人知啊??
 
到底能不能用代码实现呢
 
用ScrollBox,再在里面放置TImage或者TPanel等,
我今天刚用到它显示TPanel上超出屏幕的部分。
 
当然可以用代码实现,也可以用SCROLLBOX,也可以在FORM上直接放IMAGE,FORM本身也可以自动出现滚动条。
用代码时,当拉到SCROLLBAR时,改变IMAGE的LEFT和TOP值即可
 
改变IMAGE的LEFT和TOP值即可 ??
那image的位置不是变了??
我是说想看到image里的看不到图的那部分,而不是让imag1移动啊?
 
改变IMAGE的LEFT和TOP值即可 ??
那image的位置不是变了??
我是说想看到image里的看不到图的那部分,而不是让imag1移动啊?
没错,就是改变IMAGE的位置,将图全部显示在IMAGE上,移动IMAGE不就是滚动吗?!
另外,还有更麻烦的方法,就是用一个TBITMAP在后台调出图片,用与IMAGE同大的RECT进行拷贝。滚动条在不同的位置,RECT在BITMAP上的位置不同。
 
不行啊?你看看我写的代码??
procedure TForm1.FormCreate(Sender: TObject);
begin
scrollbar1.Left:=image1.Left;
scrollbar1.Top:=image1.Top+image1.Height;
scrollbar1.Width:=image1.Width;
scrollbar1.Max:=image1.Picture.Width;
scrollbar2.Left:=image1.Left+image1.Width;
scrollbar2.Top:=image1.Top;
scrollbar2.Height:=image1.Height;
Scrollbar2.Max:=image1.Picture.Height;
end;

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
image1.Left:=-Scrollbar1.Position;
end;
 
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
// showmessage(inttostr(Scrollbar1.Position));
image1.Left:=image1.Left-scrollbar1.Position;
end;
还是不行???
 
可是我改变了image1的left位置图像并没有显示出来反而是image1在改变
 
怪了各位大侠你们试试。看看到底是怎么回事
 

Similar threads

后退
顶部