protected override void DispatchDraw (Android.Graphics.Canvas canvas) { // Draw interior shadow canvas.Save (); canvas.ClipRect (0, 0, Width, Height); canvas.DrawPaint (shadow); canvas.Restore (); base.DispatchDraw (canvas); // Draw custom list separator canvas.Save (); canvas.ClipRect (0, Height - 2, Width, Height); canvas.DrawColor (Android.Graphics.Color.Rgb (LightTone, LightTone, LightTone)); canvas.Restore (); }
protected override void OnDraw(Android.Graphics.Canvas canvas) { base.OnDraw(canvas); // Fill the background canvas.DrawPaint(mBackgroundPaint); // Test Text canvas.Save(); var textWidth = mTextPaint.MeasureText("Hello"); Rect textBounds = new Rect(); mTextPaint.GetTextBounds("Hello", 0, 1, textBounds); canvas.DrawText("Hello", canvas.Width/2-textWidth/2, canvas.Height/2 - textBounds.Height()/2, mTextPaint); textWidth = mTextPaint.MeasureText("World"); textBounds = new Rect(); mTextPaint.GetTextBounds("World", 0, 1, textBounds); mTextPaint.Color = Color.Green; canvas.DrawText("World", (canvas.Width/2-textWidth/2) +100, (canvas.Height/2 - textBounds.Height()/2) + 100, mTextPaint); canvas.Restore(); foreach (Box box in mBoxes) { float left = Math.Min(box.Origin.X, box.Current.X); float right = Math.Max(box.Origin.X, box.Current.X); float top = Math.Min(box.Origin.Y, box.Current.Y); float bottom = Math.Max(box.Origin.Y, box.Current.Y); canvas.Save(); canvas.Rotate(box.Rotation, (box.Origin.X + box.Current.X)/2, (box.Origin.Y + box.Current.Y)/2 ); canvas.DrawRect(left, top, right, bottom, mBoxPaint); canvas.Restore(); } }