我用canvsa画出了一些图像元件,想拖拽,放大,大家有没有思路啊?
现奉上50分,若解决,再加300!

解决方案 »

  1.   

    可以按以下方法做:
    1:要有一个label autoszie:=false;transparent:=true;
    2:起码你要知道你要拖拽的区域(rect);把那个rect 设为label的rect;
    3:然后你控制label的size(在拖拽过成中)when you stop drag(发生在label的mouseup event 中) 你把你原来的图片拷贝到current label 的rect;  at end label.visible:=false;
      

  2.   

    这需要按照矢量软件的编程思路----------------------------
    论坛是否有回复,BBSMonitor帮你忙
    http://www.bbsmonitor.comTCAD
    http://www.codeidea.com
      

  3.   

    to fhb
       能说具体些吗?
      

  4.   

    用shape是不是好点...楼主做什么, 搞个mo的盗版用用
      

  5.   

    拖拽:
      记住拖前的图像的位置和拖后的位置,异或重画
    放大:
      可用MulDiv(Value, Scale, 100)
      

  6.   

    你的图象画在什么上了??
    如果画在控件上的话,可以拖动控件实现对他的拖拽,放大时就按照控件的尺寸重画既可。
    用DELPHI+OPENGL也可以实现。
      

  7.   

    很简单一个问题让你们搞得这样复杂了。就用一个 TPaintBox 
    在内存中建一 TBitmap 与这个别 PaintBox 一样大小。画图时先画在 Bitmap 上。再 BitBlt 在 PaintBox 上。每个画形有两个点
    鼠标点下时记下这个点,移动时根据当前点与第一次的点画出图形,
    放开时,再画一次。 OK!关于中间的橡皮线效果有两个方法
    一是用 pmNotXor 方式来画,画一次就显示出来,再画一次就消失。
    二用一临时 Bmp 画前先把 画布的内容 BitBlt 再这个临时BMP 上。先在 临时BMP 上画。
    完成时再画在原画上。
      

  8.   

    把那些控件的思想扔一边去,就会有思路了,GUI程序很简单,相应消息,往窗体上画东西,就这么简单~~~比如移动,移动后不应该是直接画到窗体上,而是根据移动后位图的变化,改变一个缓存位图的内容,然后再画.用个List管理各个要移动的对象,每个移动的对象包括位图内容和坐标,移动就是在逻辑上改变各个对象的坐标,然后输出到缓存位图即可.