Tkinter中Canvas对象如何实现碰撞检测???

XIANXir 2011-06-15 03:37:10
具体说,也就是检测Canvas上任意给定点是否被包含在指定的绘图对象内部???
...全文
415 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2011-06-16
  • 打赏
  • 举报
回复
好像tk是画东西上去比较容易,反过来取点取色作分析就难办了,改用PIL算了...
XIANXir 2011-06-16
  • 打赏
  • 举报
回复
另外抱怨一下:CSDN号称中国最厉害的IT网站,却把论坛上传图片这么简单的功能搞的这么复杂,图片贴上去了却又显示的效果这么差劲。。。难道这就是最厉害的IT网站应有的水平吗???
XIANXir 2011-06-16
  • 打赏
  • 举报
回复
to angel_su:

谢谢你的指点,但是经过大量的尝试我发现:这个方法只对图形有效,而对于文字无效也就是不能检测和文字的碰撞。具体情况如下:下面是三个图形碰撞检测并把检测到的图形打印出来:




可以看出,上面的图形很容易就被检测出来了,可是下面是对一个字母‘F’检测的结果:


完全看不出图形的形状

下面我把代码贴出来,各位高手也试试:
#coding=gbk
import Tkinter as Tk


def doJob(e):
for y in range(0,24):
for x in range(0,24):
if canv.find_overlapping(x,y,x,y):
print '*',
else:
print '-',
print ''
root = Tk.Tk()
canv = Tk.Canvas(root,width=24,height=24)
canv.pack(side='left')
canv.create_rectangle(3,3,6,7)
canv.bind('<Button-1>', doJob)
root.mainloop()


对于不同的情况,只需要把原代码中的canv.create_rectangle(3,3,6,7)替换为:
canv.create_arc(3,3,6,7)
canv.create_oval(3,3,6,7)
canv.create_text(3,3,'H')即可

我需要检测文字的形状,因为我要取字模

本以为这点小事情对Tk应该是很简单的,没想到这么多的曲折,花费了这么多时间,去还是在这样一个操作上卡壳了,完全没法继续进行。。。求大侠们指点一下。。。。
angel_su 2011-06-16
  • 打赏
  • 举报
回复
别抱怨了看看pil吧,很快就能上手的...
XIANXir 2011-06-16
  • 打赏
  • 举报
回复
to angel_su:

不是吧,连这点功能都实现不了!!!Tk太让人伤心了!!!
angel_su 2011-06-15
  • 打赏
  • 举报
回复
嗯,写个例子给你参考,鼠标点中图形会有提示。文档总是要去翻的,别懒...
from Tkinter import *
import tkMessageBox

def callback(event):
x, y = event.x, event.y
if canvas.find_overlapping(x, y, x, y):
msg = '(%d, %d) is in my circle!' % (x, y)
tkMessageBox.showinfo('tk', msg)


root = Tk()
canvas = Canvas(root, width=200, height=200, bg='white')
canvas.pack()
canvas.create_oval(50, 50, 150, 150, width=5)
canvas.bind('<Button-1>', callback)
root.mainloop()
XIANXir 2011-06-15
  • 打赏
  • 举报
回复
可怜啊??木人回答!!??
angel_su 2011-06-15
  • 打赏
  • 举报
回复
看看手册先,记得有一些findxxx这种方法...

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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