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 ();
		}
Esempio n. 3
0
        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);
 }
Esempio n. 6
0
        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 ();
            }
        }
Esempio n. 8
0
            public override void Draw(Android.Graphics.Canvas canvas)
            {
                if (Control == null) return;

                Control.CreateGraphicBuffers();

                var ctime = System.Environment.TickCount;
                Fleux.UIElements.Canvas.drawtime = 0;

                if (Control.offUpdated)
                {
                    lock(Control.offBmp)
                    {

                        Control.Draw(new PaintEventArgs(Control.offGr, new Rectangle(0,0, Control.offBmp.Width, Control.offBmp.Height)));

                        updcnt++;
                    }
                }
                Control.offUpdated = false;

                lock(Control.offBmp)
                {
                    if (Fleux.Core.FleuxApplication.HorizontalMirror)
                    {
                        canvas.Save();
                        canvas.Scale (-1, 1);
                        canvas.Translate (-(float)Control.drect.Width(), 0);
                    }else if (Fleux.Core.FleuxApplication.VerticalMirror)
                    {
                        canvas.Save();
                        canvas.Scale (1, -1);
                        canvas.Translate (0, -(float)Control.drect.Height());
                    }

                    Control.offGr.Flush();

                    canvas.DrawBitmap(Control.offBmp.ABitmap, Control.srect, Control.drect, paint);

                    updcntflush++;
                }
                if (PerfData)
                {
                    ctime = System.Environment.TickCount - ctime;
                    {
                        totime += ctime;
                    }
                    var cavg = totime / (updcnt+1);

                    var cpaint = new Android.Graphics.Paint();
                    cpaint.Color = new Android.Graphics.Color(0xA0, 0xFF, 0xFF, 0xFF);
                    cpaint.SetStyle(Android.Graphics.Paint.Style.Fill);
                    canvas.DrawRect(0,0, 250, 20, cpaint);
                    canvas.DrawText(""+updcnt+":"+updcntflush+":"+updcntinval+" ctime: "+ctime+"cavg:"+cavg+" canv: "+Fleux.UIElements.Canvas.drawtime, 0,20, spaint);
                    cpaint.Dispose();
                    if (updcnt > 100)
                    {
                        totime = 0;
                        updcnt = 0;
                    }
                }
            }
Esempio n. 9
0
        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();
            }
        }