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