Events 在我的重写方法mono for android中找不到合适的方法

Events 在我的重写方法mono for android中找不到合适的方法,events,view,xamarin.android,draw,Events,View,Xamarin.android,Draw,我试图根据触摸事件来划分界限。基本上,当手指移动时,它会画线。重写ontouchevent和onsizechanged时出错。它最初是用JAVA编写的。我刚把它翻译成C。代码如下: protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); currentLevel = Intent.GetIntExtra("gameLevel", 0); player

我试图根据触摸事件来划分界限。基本上,当手指移动时,它会画线。重写ontouchevent和onsizechanged时出错。它最初是用JAVA编写的。我刚把它翻译成C。代码如下:

protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        currentLevel = Intent.GetIntExtra("gameLevel", 0);
        playerScore = Intent.GetIntExtra("score", 0);
        SetContentView(new SampleView(this));


        // Create your application here
    }

    private class SampleView : View
    {
        private Paint mPaint;
        private static Bitmap m_bitmap;
        private DisplayMetrics m_metrics;
        private Canvas m_canvas;
        private Path m_path;
        private Paint m_bitmapPaint;
        private float m_X, m_Y;
        static bool m_pathDrawn = false;
        private static float TOUCH_TOLERANCE = 4;

        public SampleView(Context context)
            : base(context)
        {
            Focusable = true;

            mPaint = new Paint();
            mPaint.AntiAlias = true;
            mPaint.Dither = true;
            mPaint.SetStyle(Paint.Style.Stroke);
            mPaint.StrokeWidth = 12;
            mPaint.StrokeJoin = Paint.Join.Round;
            mPaint.StrokeCap = Paint.Cap.Round;
            m_metrics = context.Resources.DisplayMetrics;
            m_bitmap = Bitmap.CreateBitmap(m_metrics.WidthPixels, m_metrics.HeightPixels, Bitmap.Config.Argb8888);
            m_canvas = new Canvas(m_bitmap);
            m_bitmapPaint = new Paint();



        }

        public void onerase()
        {
            m_canvas = null;
        }

        protected override void onSizeChanged(int p_w, int p_h, int p_oldw, int p_oldh)
        {
            this.onSizeChanged(p_w, p_h, p_oldw, p_oldh);
        }

        protected override void OnDraw(Canvas canvas)
        {
            canvas.DrawColor(Color.Black);
            canvas.DrawBitmap(m_bitmap, 0, 0, m_bitmapPaint);
            canvas.DrawPath(m_path, mPaint);
        }

        private void touch_start(float p_x, float p_y)
        {
            m_path.Reset();
            m_path.MoveTo(p_x, p_y);
            m_X = p_x;
            m_Y = p_y;
        }

        private void touch_move(float p_x, float p_y)
        {
            float m_dx = Math.Abs(p_x - m_X);
            float m_dy = Math.Abs(p_y - m_Y);
            if (m_dx >= TOUCH_TOLERANCE || m_dy >= TOUCH_TOLERANCE)
            {
                m_path.QuadTo(m_X, m_Y, (p_x + m_X) / 2, (p_y + m_Y) / 2);
                m_X = p_x;
                m_Y = p_y;
                m_pathDrawn = true;
            }
        }

        private void touch_up()
        {
            m_path.LineTo(m_X, m_Y);
            // commit the path to our offscreen
            m_canvas.DrawPath(m_path, mPaint);
            // kill this so we don't double draw
            m_path.Reset();
        }

        public override bool onTouchEvent(MotionEvent p_event)
        {

            float m_x = p_event.GetX();
            float m_y = p_event.GetY();
            switch (p_event.Action)
            {
                case MotionEventActions.Down:
                    touch_start(m_x, m_y);
                    Invalidate();
                    break;
                case MotionEventActions.Move:
                    touch_move(m_x, m_y);
                    Invalidate();
                    break;
                case MotionEventActions.Up:
                    touch_up();
                    Invalidate();
                    break;
            }
            return true;
        }
    }

还有一件事。我想让我的图像视图从一个布局作为我的画布,并在那里画一条线。我该怎么做?谢谢

方法名称应使用pascal大小写


因此发生错误是因为我在Parameter变量中使用了下划线?此处不讨论参数。在C#中,方法名是pascal大小写,因此它是
OnTouchEvent
而不是
OnTouchEvent
。仔细查看第一个字符
O
O
:)我懂了!对不起,我没注意到。谢谢!:)
public override bool OnTouchEvent(MotionEvent e)
{
}

protected override void OnSizeChanged(int w, int h, int oldw, int oldh)
{
}