要求是这样的,一个TImage上有一张图片,图片底色为白色,上有三个黑色的矩形,三个矩形是不相连的.当用户用鼠标一点击其中一个矩形时,这个矩形的区域就用另一个TImage的图片来填充。为了方便大家帮忙,我已把图片做好了:http://terry.imwork.net/csdn/mypic.htm本人来csdn多年,会用论坛的所有功能,问题解决,一定及时给分结贴,分不够会再加,up者有分。Email:[email protected]

解决方案 »

  1.   

    1. 首先计算三个矩形的区域
    2. 处理Image1的OnMouseDown事件, 如果点在以上某个区域中, 则在Image1.Picture中画出需要画的图片.
      

  2.   

    很简单啊
    1.判断点击的像素点的颜色是不是黑色,如果是说明选中了一个矩形,设选中点的像素坐标是(x,y)
    2.从x向左边搜索,判断(x-1,y)是不是黑色,若是继续判断(x-2,y)...直到(x-n,y)是黑色而(x-n-1,y)是白色
      同理搜索右边找到(x+m)点
      这样矩形的宽度、起始坐标都有了
    3.同理上下搜索找到高度的起始坐标
    4.把Image的像素复制到这个矩形里面
      

  3.   

    可以先找出这些矩形,然后在矩形上面创建一个image控件,image控件再赋予一个onclick事件不知这样是不是更加方便点
      

  4.   

    谢谢楼上的各位,都是只讲了大致的过程,就像说"火箭升空后,走两千光年,就到达海王星了"那样.
    1 在鼠标点击矩形区域时,怎样取得当前的像素坐标?2 如果另一个TImage的图片大小,是远大于这个矩形的,又或者图是长方形的,那怎么描画到那个黑矩形上呢?
      

  5.   

    有个简单的方法,使用一个TImage放楼主的有3个矩形的大图片,然后在每个图片上各放一个TImage,这些TImage大小和矩形一样,但是开始这些TImage中不要放置图片,然后这些TImage接受Click 事件,被点击了就加入新的图片。
    刚刚测试过,绝对可行,坏处就是如果还有其他处理,可能给其他的处理带来些麻烦,另外效率不高,看你的要求。
      

  6.   

    OnMouseUp事件中自动提供鼠标的坐标的。看你的需求是不是需要用这个事件。
      

  7.   

    给你一个现成的控件,http://www.2ccc.com/article.asp?articleid=99
      

  8.   

    1.OnMouseUp、MouseDown、MouseMove事件中都提供鼠标像素点
    2.如果Image图片大小与矩形不符,那就要看自己的要求了,或者strench或者按比例缩小,具体可以上网查查。很多图象算法已经很成熟了,比如双线性插值算法等等