VC的处理网格状图片问题

wj_yhl 2009-04-17 03:20:06
我现在开发一个程序,首先生成的图片是网格状的,在一个图片框中装载,中心点是固定的,整体呈圆形,然后被由圆心发出的射线和若干个同心圆切分成n个网格状的三角形,现在想要实现点击其中一个网格时,使这个网格的颜色反色,并且获取当前网格的坐标,请问诸位大大,有没有实现的方法,初次接触vc的图片处理,一点头绪都没有,谢谢啦~~~~
先鞠躬啦,呵呵~~~~(*^__^*) 嘻嘻……
...全文
237 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
百事烟 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wj_yhl 的回复:]
问题是如何识别一个三角形区域呢?
[/Quote]

模仿 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
xghuzd 2009-04-20
  • 打赏
  • 举报
回复
顶上去
cnzdgs 2009-04-19
  • 打赏
  • 举报
回复
用文字描述不太好表达。把图形中心点看作坐标原点,首先计算鼠标坐标与原点连线的角度,因为图形按角度分为8个区域,把角度除以π/4并取整,可以得出该点所属的区域(0~7之间的一个值),再用该值乘以π/4和该值加1再乘以π/4分别得到该点所在区域的边界线的角度。然后分别计算该点到两条边界线的距离,再分别除以两边平行线之间的间隔并取整,即可确定其所在的三角形。
wj_yhl 2009-04-18
  • 打赏
  • 举报
回复
不是扇形,应该是小的三角形啊~~~
wj_yhl 2009-04-18
  • 打赏
  • 举报
回复
问题是如何识别一个三角形区域呢?
wj_yhl 2009-04-18
  • 打赏
  • 举报
回复
wj_yhl 2009-04-18
  • 打赏
  • 举报
回复
[URL=http://www.yupoo.com/photos/view?id=ff80808120a21c8c0120b6b88c6978b8][IMG]http://pic.yupoo.com/automation1/3898474c9b01/medium.jpg[/IMG][/URL][URL=http://www.yupoo.com/photos/view?id=ff80808120a21f410120b6b8895e5799][IMG]http://pic.yupoo.com/automation1/4587074c9b00/medium.jpg[/IMG][/URL]


上面是图片
cnzdgs 2009-04-18
  • 打赏
  • 举报
回复
判断鼠标位置的方法与绘制界面类似,确定是圆周半径和两条边的坐标,然后创建Rgn、FillRgn。
cnzdgs 2009-04-17
  • 打赏
  • 举报
回复
看不到图。
大概做法就是先确定绘制网格的具体方法,根据鼠标位置确定网格的坐标,创建网格的Rgn,再FillRgn。
wj_yhl 2009-04-17
  • 打赏
  • 举报
回复
好的啊,我给贴个图,网格时变化的,随着参数的不同,网格的个数和大小事不一样的,大家可以去我的相册里看看图
地址:
http://hi.baidu.com/hbwc/album/%B3%CC%D0%F2
大家看一下吧!两张图,是两种参数时的图片,网格的密度和大小均发生了变化,图片是matlab画出来的,我只是放到了vc 的图片框中显示,不知道诸位有什么好的办法没有呢?
李V四 2009-04-17
  • 打赏
  • 举报
回复
计算鼠标点落在某一网格的方法举例:
鼠标坐标相对圆心的坐标为(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减即可。
闪破风浪 2009-04-17
  • 打赏
  • 举报
回复
描述的比较笼统~~~~
画个大概的图吧?要不~
Tinary3v0 2009-04-17
  • 打赏
  • 举报
回复
我也没有看太懂
感觉上好像是把图像分成了很多份 需要取其中一份的坐标并反色这一份所在的区域。

如果是这样的话 就是一个纯数学计算问题了
给个提示 用CRgn类将你划分的各个区域保存起来 然后使用PtInRegion来判断鼠标在那个区域当中

根据这个区域去找图像中相应的位置 取RGB值进行反色。

楼主最好贴一个效果图出来 也好给你验证一下。
2hope 2009-04-17
  • 打赏
  • 举报
回复
没怎么看懂,帮你顶

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧