重金请教(200分)

  • 主题发起人 主题发起人 tmnet
  • 开始时间 开始时间
T

tmnet

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编制这样一个程序,我首先将图象绘制在内存中,然后将内存中的图象复制到窗体上。<br>图象是动态生成的,窗体的大小应该可以调整,不能使用WINDOWS的滚动条很难看。<br>像这样一个程序该如何实现。(其实就是在窗体上显示一幅大图象,然后用滚动条移动图象)<br>
 
补充一点:最好不要使用控件。如果能在一个IMAGE内实现就最好了。<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 另外,我只想问各位,这样的程序的实现框架、技术要点是怎样的。
 
不难:)<br>开始时,先在"后缓冲"(就是在内存中的Tbitmap对象)中定一个Rect,此Rect就是当前在<br>image中显示的Rect,然后在Image中写OnMouseMove事件处理涵数,判断mouse移动的方向<br>和移动的偏移量,就可以得到一个新的显示的Rect,然后直接用image.Canvas.CopyRect(<br>目标Rect,bufferBitmpa.Canvas,源Rect)就可以了:) ,并且处理速度不会慢:)
 
把整个Image放到Panel里去就可以了,连Copy都不用。<br>为了使图像移动的时候平滑,可以 DoubleBuffered:=true;
 
把Image放在ScrollBox里面就可以了.
 
//不使用控件<br>不太现实啦!ScrollBox就不错,你觉得他带的滚动条不好看,可以使用,<br>第3方ScrollBox,themeskin里的就不错!
 
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; b:TBitmap;<br>begin<br>&nbsp; b:=TBitmap.create;<br>&nbsp; b.Width:=100;<br>&nbsp; b.Height:=100;<br>&nbsp; b.Canvas.Ellipse (20,20,80,80);<br>&nbsp; canvas.CopyRect(Rect(0,0,100,100),b.canvas,Rect(0,0,100,100)); <br>&nbsp; b.free;<br>end;<br>
 
后退
顶部