aha,我也在做呀...
用自定义的用户控件

解决方案 »

  1.   

    hehe 
    用PictureBox了,可以用PictureBox.Image画图
    用PictureBox.Region设置外形与画的图案相同,
    而且可以响应mouse事件不过就是太慢了,再多几个的话,真的要疯了
      

  2.   

    再Form中加入一个鼠标的移动的事件,再判断鼠标位置了,
    可以试试
      

  3.   

    不会吧?我反正还没有遇到这样的问题,又不会重绘。怎么会这样?
    不过GDI+的效率是不怎么样。
      

  4.   

    在Form里先作两个按钮,在加入一个可以移动的panel或picturebox之类的东西,运行时移动panel或picurebox快一点按钮的字就显不出来了,停一停就好了,好像是刷新效率不好,要作好一点就要DirectX了
      

  5.   

    方案1:先用数组记录每一条线的位置(起始,结束),然后在mouse的事件中判断鼠标是在哪条线上。方案2:把它做成一个object,再给object加上各种事件。
      

  6.   

    系统本身不提供这种功能的,你只能通过处理mouse事件自己实现。
    可以用以下方法:
    1。替代实现。如_95421(王磊) 所说,每当你画完一个图形,就按这个图形的包围图形创建一控件。简单起见,你可按包围矩形(最想能包围图形的矩形,找到最高点,最低点,最左点,最右点即可)创建控件。建议使用定制控件,由控件记住自己的形状。
    2。直接处理。生成一class,代表每一个图形,由此class记住自己的形状。程序保留一数组。当鼠标移动时,调用每一对象的方法,检查鼠标在不在自己的范围内。当然,这种方法有些浪费CPU但也比较容易实现。为提高速度可把屏幕分成若干区域,建议区域列表,每一区域保存一数组,指向每一个存在此区域的图形,然后当鼠标再吃区域时再调用此区域每一对象的方法,校验鼠标是否在自己的区域内。
    3。采用一些图形学的知识,如我们打的游戏所做的。我也不会!!!!!
      

  7.   

    对每一个图形生成一个GraphicPath(或Region)对象,然后当鼠标移动时,对每一个对象使用IsVisible判断当前鼠标位置是否在路径内,
      

  8.   

    我原来实现过这样的功能,和colinfly(Colin)的方法2是一样的,当图形多的时候,移动MOUSE时很慢,后来我就不要这个功能了
      

  9.   


      你用GDI+画的图形,那有Handle啊,怎么可能直接通过它来触发事件呢?
    我是通过查找区域来出发事件的,也就是记下每个图形在容器上的区域位置,然后通过容器的MouseMove触发,只是需要判断区域罢了