protected override void OnDraw(Android.Graphics.Canvas canvas) { base.OnDraw (canvas); TextPaint textPaint = Paint; textPaint.Color = new Android.Graphics.Color(CurrentTextColor); textPaint.DrawableState = GetDrawableState (); canvas.Save(); if ( TopDown ) { canvas.Translate( Width, 0 ); canvas.Rotate( 90 ); } else { canvas.Translate( 0, Height ); canvas.Rotate( -90 ); } canvas.Translate (CompoundPaddingLeft, ExtendedPaddingTop); Layout.Draw (canvas); // getLayout().draw( canvas ); canvas.Restore (); // canvas.restore(); }
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 (); }
public override void Draw(Android.Graphics.Canvas canvas) { try { int width = this.Width - this.PaddingLeft - this.PaddingRight; int height = this.Height - this.PaddingBottom - this.PaddingTop; var radius = Math.Min(width, height) / 2; //var strokeWidth = ((float)(5 * Math.Min(width, height))) / 100; //radius -= (int)Math.Round(strokeWidth / 2); // A revoir: Est-ce que c'est bien centré avec les padding? Path path = new Path(); path.AddCircle(this.PaddingLeft + (width / 2), this.PaddingTop + (height / 2), radius, Path.Direction.Ccw); canvas.Save(); canvas.ClipPath(path); base.Draw(canvas); canvas.Restore(); //path = new Path(); //path.AddCircle(this.PaddingLeft + (width / 2), this.PaddingTop + (height / 2), radius, Path.Direction.Ccw); //var paint = new Paint(); //paint.AntiAlias = true; //paint.StrokeWidth = strokeWidth; //paint.SetStyle(Paint.Style.Stroke); //paint.Color = Color.Black; //canvas.DrawPath(path, paint); //paint.Dispose(); path.Dispose(); return; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Unable to create circle image: " + ex); } base.Draw(canvas); }
protected override void OnDraw(Android.Graphics.Canvas canvas) { var textPaint = this.Paint; textPaint.Color = new Color(this.CurrentTextColor); canvas.Save(); if (m_TopDown) { canvas.Translate(this.Width, 0); canvas.Rotate(90.0f); } else { canvas.Translate(0, this.Height); canvas.Rotate(-90.0f); } canvas.Translate(this.CompoundPaddingLeft, this.ExtendedPaddingTop); this.Layout.Draw(canvas); canvas.Restore(); }
protected override bool DrawChild(Android.Graphics.Canvas canvas, Android.Views.View child, long drawingTime) { try { var element = (RoundedImage)Element; var radius = Math.Min(Width, Height) / 2; var strokeWidth = 10; radius -= strokeWidth / 2; //Create path to clip var path = new Path(); path.AddCircle(Width / 2, Height / 2, radius, Path.Direction.Ccw); canvas.Save(); canvas.ClipPath(path); var result = base.DrawChild(canvas, child, drawingTime); canvas.Restore(); // Create path for circle border path = new Path(); path.AddCircle(Width / 2, Height / 2, radius, Path.Direction.Ccw); var paint = new Paint(); paint.AntiAlias = true; //TODO look for a correct way to assign the BorderWidth depending of the screen dpi paint.StrokeWidth = (float)element.BorderWidth; paint.SetStyle(Paint.Style.Stroke); paint.Color = element.BorderColor.ToAndroid(); canvas.DrawPath(path, paint); //Properly dispose paint.Dispose(); path.Dispose(); return result; } catch (Exception ex) { //Why this happend Console.WriteLine(ex.Message); } return base.DrawChild(canvas, child, drawingTime); }
protected override void DispatchDraw(Android.Graphics.Canvas canvas) { base.DispatchDraw (canvas); if (opened || isTracking || animator != null) { // Draw inset shadow on the menu canvas.Save (); shadowDrawable.SetBounds (0, 0, Context.ToPixels (8), Height); canvas.Translate (ContentView.Left - shadowDrawable.Bounds.Width (), 0); shadowDrawable.Draw (canvas); canvas.Restore (); if (contentOffsetX != 0) { // Cover the area with a black overlay to display openess graphically var openness = ((float)(MaxOffset - contentOffsetX)) / MaxOffset; overlayPaint.Alpha = Math.Max (0, (int)(MaxOverlayAlpha * openness)); if (overlayPaint.Alpha > 0) canvas.DrawRect (0, 0, ContentView.Left, Height, overlayPaint); } } }
protected override void DispatchDraw(Android.Graphics.Canvas canvas) { base.DispatchDraw (canvas); if (mPinnedShadow != null) { // prepare variables int pLeft = ListPaddingLeft; int pTop = ListPaddingTop; View view = mPinnedShadow.View; // draw child canvas.Save (); canvas.ClipRect (pLeft, pTop, pLeft + view.Width, pTop + view.Height); canvas.Translate (pLeft, pTop + mTranslateY); DrawChild (canvas, mPinnedShadow.View, DrawingTime); 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(); } }