高手一定要进来,高分求一个算法。 要求是这样的,一个TImage上有一张图片,图片底色为白色,上有三个黑色的矩形,三个矩形是不相连的.当用户用鼠标一点击其中一个矩形时,这个矩形的区域就用另一个TImage的图片来填充。为了方便大家帮忙,我已把图片做好了:http://terry.imwork.net/csdn/mypic.htm本人来csdn多年,会用论坛的所有功能,问题解决,一定及时给分结贴,分不够会再加,up者有分。Email:[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 首先计算三个矩形的区域2. 处理Image1的OnMouseDown事件, 如果点在以上某个区域中, 则在Image1.Picture中画出需要画的图片. 很简单啊1.判断点击的像素点的颜色是不是黑色,如果是说明选中了一个矩形,设选中点的像素坐标是(x,y)2.从x向左边搜索,判断(x-1,y)是不是黑色,若是继续判断(x-2,y)...直到(x-n,y)是黑色而(x-n-1,y)是白色 同理搜索右边找到(x+m)点 这样矩形的宽度、起始坐标都有了3.同理上下搜索找到高度的起始坐标4.把Image的像素复制到这个矩形里面 可以先找出这些矩形,然后在矩形上面创建一个image控件,image控件再赋予一个onclick事件不知这样是不是更加方便点 谢谢楼上的各位,都是只讲了大致的过程,就像说"火箭升空后,走两千光年,就到达海王星了"那样.1 在鼠标点击矩形区域时,怎样取得当前的像素坐标?2 如果另一个TImage的图片大小,是远大于这个矩形的,又或者图是长方形的,那怎么描画到那个黑矩形上呢? 有个简单的方法,使用一个TImage放楼主的有3个矩形的大图片,然后在每个图片上各放一个TImage,这些TImage大小和矩形一样,但是开始这些TImage中不要放置图片,然后这些TImage接受Click 事件,被点击了就加入新的图片。刚刚测试过,绝对可行,坏处就是如果还有其他处理,可能给其他的处理带来些麻烦,另外效率不高,看你的要求。 OnMouseUp事件中自动提供鼠标的坐标的。看你的需求是不是需要用这个事件。 给你一个现成的控件,http://www.2ccc.com/article.asp?articleid=99 1.OnMouseUp、MouseDown、MouseMove事件中都提供鼠标像素点2.如果Image图片大小与矩形不符,那就要看自己的要求了,或者strench或者按比例缩小,具体可以上网查查。很多图象算法已经很成熟了,比如双线性插值算法等等 怎么让桌面显示图片 高分问一下 delphi如何新建、复制或者文件夹? 关于tstatictext的问题,比较急 Windows系统时间问题,有趣!大家进来谈谈。 sql 语句在delphi中的应用!!在线等 怎样在代码中打开指定的文件,有同源代码在一目录下与不在同一目录下两种!!! 各位能否比较详细的讲解一下#临时表和##临时表的生命周期?谢谢 好像不是很难的问题!但是我很着急!!! 请教DBGrid控件如何显示Text类型的字段? 请问如何在delphi程序中向web程序提交数据? 数据包高手请进 如何改变窗口内的鼠标风格?
2. 处理Image1的OnMouseDown事件, 如果点在以上某个区域中, 则在Image1.Picture中画出需要画的图片.
1.判断点击的像素点的颜色是不是黑色,如果是说明选中了一个矩形,设选中点的像素坐标是(x,y)
2.从x向左边搜索,判断(x-1,y)是不是黑色,若是继续判断(x-2,y)...直到(x-n,y)是黑色而(x-n-1,y)是白色
同理搜索右边找到(x+m)点
这样矩形的宽度、起始坐标都有了
3.同理上下搜索找到高度的起始坐标
4.把Image的像素复制到这个矩形里面
1 在鼠标点击矩形区域时,怎样取得当前的像素坐标?2 如果另一个TImage的图片大小,是远大于这个矩形的,又或者图是长方形的,那怎么描画到那个黑矩形上呢?
刚刚测试过,绝对可行,坏处就是如果还有其他处理,可能给其他的处理带来些麻烦,另外效率不高,看你的要求。
2.如果Image图片大小与矩形不符,那就要看自己的要求了,或者strench或者按比例缩小,具体可以上网查查。很多图象算法已经很成熟了,比如双线性插值算法等等