我现在开发一个程序,首先生成的图片是网格状的,在一个图片框中装载,中心点是固定的,整体呈圆形,然后被由圆心发出的射线和若干个同心圆切分成n个网格状的三角形,现在想要实现点击其中一个网格时,使这个网格的颜色反色,并且获取当前网格的坐标,请问诸位大大,有没有实现的方法,初次接触vc的图片处理,一点头绪都没有,谢谢啦~~~~
先鞠躬啦,呵呵~~~~(*^__^*) 嘻嘻……
先鞠躬啦,呵呵~~~~(*^__^*) 嘻嘻……
解决方案 »
- 在线等,高手进,动态创建的CTreeCtrl绑定事件绑定不了
- 求助:如何调用编辑框中设定的值
- 回调函数,总是写得不对。看代码。
- 多线程参数传递问题(很困惑请高人帮忙和大家来讨论)
- 从17'转到15'显示器后的界面偏移。
- 大侠介绍一下哪里有比较稳定的VC源代码,支持多个客户连接的
- DAO怎样动态创建一个Access表
- 谁知道哪里可以下载win2k server安装程序啊?
- 选中ListCtrl的一项的事件是什么?LVN_????吗?
- 请看下面例程,能解决的41分奉送(最多只有这么多啦,以后再加!).
- 愚人节晚了两天。继续忽悠!Nana C++ Library
- 在基于对话框的MFC程序中,怎样用picture control 动态的显示位图?
感觉上好像是把图像分成了很多份 需要取其中一份的坐标并反色这一份所在的区域。如果是这样的话 就是一个纯数学计算问题了
给个提示 用CRgn类将你划分的各个区域保存起来 然后使用PtInRegion来判断鼠标在那个区域当中根据这个区域去找图像中相应的位置 取RGB值进行反色。楼主最好贴一个效果图出来 也好给你验证一下。
鼠标坐标相对圆心的坐标为(x,y),圆心(0,0),以射线A和射线B都落在第一扇区为例,(x1,y1)为射线A上一点,(x2,y2)为射线B上一点
网格的内圆半径为r1,外圆半径为r2,则落在该网格所有点满足以下两个条件:
1 x的平方+y的平方开根号之后的值大于r1小于r2
2 y1/x1的绝对值<y/x的绝对值<y2/x2的绝对值(假定射线B在射线A的上方)
射线落在其他扇区可以类似分析。
这样你可以找到某个网格中所有所有点的坐标,同样可以分析鼠标所在的网格,找出鼠标落在的网格所有点坐标,把对应的点像素值用255减即可。
地址:
http://hi.baidu.com/hbwc/album/%B3%CC%D0%F2
大家看一下吧!两张图,是两种参数时的图片,网格的密度和大小均发生了变化,图片是matlab画出来的,我只是放到了vc 的图片框中显示,不知道诸位有什么好的办法没有呢?
大概做法就是先确定绘制网格的具体方法,根据鼠标位置确定网格的坐标,创建网格的Rgn,再FillRgn。
模仿 ARC GIS 自己做个三角形类(一个很好复习OOP的机会^^),最好用GDI+做,GDI也行
class MyTriangle
{
private:
PointF:ptA,ptB,ptC;//3个点
public:
BOOL PointFIsIn();//判断1个点是否在此三角形内
GetAllPtF()://得到该三角形内所有点坐标,用来着色用
}CList myTriangleList; //生成一个链表,保存生成的所有三角形1.生成所有三角形,并保存在list中...
2.根据鼠标得到目标点PtDst,遍历所有三角形,判断目标点PtDst是否在三角形中//当然不用全遍历,根据实际优化
3.找到目标三角形,得到该三角形内所有点坐标,setPix..........OK