怎样获取鼠标在picturebox上移动时的坐标?
我在picturebox的mouse_move里,将e.x和e.y显示到状态栏上,但显示的坐标总是以左上角为(0,0)点的,但我其实已经用了:
e.Graphics.TranslateTransform(200, 200);将坐标原点改到了(200,200).该怎么实现呀?
也就是我想让鼠标在picturebox的(200,200)像素处时,显示的坐标为(0,0)而非(200,200).

解决方案 »

  1.   

    e.x + 200, e.y + 200
    自己加个偏移吧
    事件中的坐标不会被Graphics改变一个是窗体坐标
    一个是设备(DC)坐标
      

  2.   

    谢谢你的回答,但是其实在我的界面上除了平移外还是旋转,另外我除了要在界面上显示鼠标所在的坐标外,还要在mouse_down时画直线,画圆等.如果每次都这样的话,是不是会很麻烦.
      

  3.   

    谢谢你的回答,但是其实在我的界面上除了平移外还有旋转,另外我除了要在界面上显示鼠标所在的坐标外,还要在mouse_down时画直线,画圆等.如果每次都这样的话,是不是会很麻烦.
      

  4.   

    TranslateTransform方法只是对Graphics的画图坐标有效果,而在控件或窗体上的鼠标的坐标是没有影响的.
      

  5.   

    如果你只是用画图,你完全不必用TranslateTransform来转换坐标,而直接使用鼠标的坐标就可以了.
    当你要实现和数学坐标系统完全一致的时候,比如你要画一个数学上的四像限的坐标系,在这个坐标系上画数学图像才用到TranslateTransform来转换坐标,否则没有必要.
      

  6.   

    关注一下,请大家帮忙看看这个100分的问题,网址:
    http://community.csdn.net/Expert/topic/5366/5366610.xml?temp=.5854761
      

  7.   

    楼主,还在顶啊,呵呵,你觉得会有简单的答案吗?你用TranslateTransform转的是画图的坐标,并不是鼠标的坐标.
    要想得到你要的结果只能是自己换算得到.