none
求助,给GDI+添加事件 RRS feed

  • 问题

  • 目前个人想实现些技术,完成自己设计的一个软件。
    但是现在遇到了麻烦,就是鼠标事件的响应。

    我目前这个程序的设计,界面等都打算用GDI+来做,一来熟悉和巩固GDI+,二来为我以后的功能打下伏笔。

    目前情况是这样的。
    我建立了一个winform项目,我在空的窗口上画了两个图形。
    一个三角形,
    一个正方形。

    我想要实现的是:
      鼠标移到三角形或者是正方形区域内,点击,我可以获得我鼠标当前获得是的哪个对象,即是三角形还是正方形。
    我点击不放可以进行拖动。
      我目前卡住的地方,GDI+我很少用,做winform都是用的控件,控件本身就带有事件等属性,鼠标在上面操作等,控件可以捕获到。
    而用GDI+画的东西怎么去设置事件?或者怎么给用GDI+画出来的图形添加事件?
      有可能我这个想法就出了问题,但怎么去实现我想要的效果。

      我最终想做的是一个可以简单操作的小游戏,很多winform小游戏界面等都是画图显示出来的,鼠标移动到一个人或者物上面可以选中,知道
    我当前的对象,以便进行操作。我想用GDI+画些简单图形,然后通过鼠标进行操作,以后肯还要进行输入文字,目前操作就是可以点击对象和移动。
    怎么去给GDI+画出来的图形加这个事件?

    不知道我描述清楚没有,大家能不能看懂~希望大家指点!
    谢谢!

    2009年8月13日 14:15

答案

  • 你好!
         你可以直接使用窗体的MouseDown等事件,然后获取到鼠标的坐标,然后使用Rectangle类的Contains方法来判断鼠标点击的位置是否在矩形内。
         如果鼠标点击的位置包含在矩形内,才进行处理,这样就模拟了鼠标在矩形上点击的效果

    周雪峰
    • 已标记为答案 如蜗牛 2009年8月14日 3:33
    2009年8月13日 15:30
    版主

全部回复

  • 这个我也想知道。 不妨试试自定义控件, 把gdi+当成控件使用
    2009年8月13日 14:57
  • 你好!
         你可以直接使用窗体的MouseDown等事件,然后获取到鼠标的坐标,然后使用Rectangle类的Contains方法来判断鼠标点击的位置是否在矩形内。
         如果鼠标点击的位置包含在矩形内,才进行处理,这样就模拟了鼠标在矩形上点击的效果

    周雪峰
    • 已标记为答案 如蜗牛 2009年8月14日 3:33
    2009年8月13日 15:30
    版主
  • 参考MFC的DrawCLI示例。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月13日 16:43
    版主