protected override void OnDraw(Android.Graphics.Canvas canvas) { var rect = new RectF(0, 0, 300, 300); switch (Shape) { case Shape.Circle: canvas.DrawOval(rect, new Paint() { Color = Color.CornflowerBlue }); break; case Shape.Square: canvas.DrawRect(rect, new Paint() { Color = Color.Crimson }); break; case Shape.Triangle: var path = new Path(); path.MoveTo(rect.CenterX(), rect.Top); path.LineTo(rect.Left, rect.Bottom); path.LineTo(rect.Right, rect.Bottom); path.Close(); var paint = new Paint() {Color = Color.Crimson}; paint.Color = Color.Gold; paint.SetStyle(Paint.Style.Fill); canvas.DrawPath(path, paint); break; default: throw new ArgumentOutOfRangeException(); } }
public override void Draw(Android.Graphics.Canvas canvas) { base.Draw(canvas); var rect = new RectF(0,0,300,300); switch (TheShape) { case Shape.Circle: canvas.DrawOval(rect, new Paint() { Color = Color.Aqua }); break; case Shape.Square: canvas.DrawRect(rect, new Paint() { Color = Color.Red }); break; case Shape.Triangle: var path = new Path(); path.MoveTo(rect.CenterX(), 0); path.LineTo(0, rect.Height()); path.LineTo(rect.Width(), rect.Height()); path.Close(); var paint = new Paint() {Color = Color.Magenta}; paint.SetStyle(Paint.Style.Fill); canvas.DrawPath(path, paint); break; default: throw new ArgumentOutOfRangeException(); } }
protected override void OnDraw(Android.Graphics.Canvas canvas) { String rdText = this.Text.ToString(); Paint textPaint = new Paint(); textPaint.AntiAlias = true; textPaint.TextSize = this.TextSize; textPaint.TextAlign = Android.Graphics.Paint.Align.Center; float canvasWidth = canvas.Width; float textWidth = textPaint.MeasureText(rdText); if (Checked) { this.SetBackgroundResource(Resource.Drawable.RoundedShape); int[] colors = new int[] { this.Context.Resources.GetColor(Resource.Color.radioUnselectTop), this.Context.Resources.GetColor(Resource.Color.radioSelectTop )}; GradientDrawable grad = new GradientDrawable(GradientDrawable.Orientation.TopBottom, colors); grad.SetBounds(0, 0, this.Width, this.Height); grad.SetCornerRadius(7f); this.SetBackgroundDrawable(grad); } else { this.SetBackgroundResource(Resource.Drawable.RoundedShape); int[] colors = new int[] { this.Context.Resources.GetColor(Resource.Color.radioUnselectTop), this.Context.Resources.GetColor(Resource.Color.radioUnselectBottom) }; GradientDrawable grad = new GradientDrawable(GradientDrawable.Orientation.TopBottom, colors); grad.SetBounds(0, 0, this.Width, this.Height); grad.SetCornerRadius(7f); this.SetBackgroundDrawable(grad); } Paint paint = new Paint(); paint.Color = Color.Transparent; paint.SetStyle(Android.Graphics.Paint.Style.Stroke); Rect rect = new Rect(0, 0, this.Width, this.Height); canvas.DrawRect(rect, paint); base.OnDraw(canvas); }
protected override void OnDraw (Android.Graphics.Canvas canvas) { int height = Height; int childCount = ChildCount; int dividerHeightPx = (int) (Math.Min(Math.Max(0f, _dividerHeight), 1f) * height); SlidingTabLayout.ITabColorizer tabColorizer =_customTabColorizer != null ? _customTabColorizer: _defaultTabColorizer; // Thick colored underline below the current selection if (childCount > 0) { View selectedTitle = GetChildAt(_selectedPosition); int left = selectedTitle.Left; int right = selectedTitle.Right; int color = tabColorizer.GetIndicatorColor(_selectedPosition); if (_selectionOffset > 0f && _selectedPosition < (ChildCount - 1)) { int nextColor = tabColorizer.GetIndicatorColor(_selectedPosition + 1); if (color != nextColor) { color = BlendColors(nextColor, color, _selectionOffset); } // Draw the selection partway between the tabs View nextTitle = GetChildAt(_selectedPosition + 1); left = (int) (_selectionOffset * nextTitle.Left +(1.0f - _selectionOffset) * left); right = (int) (_selectionOffset * nextTitle.Right +(1.0f - _selectionOffset) * right); } _selectedIndicatorPaint.Color = Color.LightSkyBlue; canvas.DrawRect(left, height - _selectedIndicatorThickness, right, height, _selectedIndicatorPaint); } // Thin underline along the entire bottom edge canvas.DrawRect(0, height - _bottomBorderThickness, Width, height, _bottomBorderPaint); // Vertical separators between the titles int separatorTop = (height - dividerHeightPx) / 2; for (int i = 0; i < childCount - 1; i++) { View child = GetChildAt(i); _dividerPaint.Color=Color.Gray; canvas.DrawLine(child.Right, separatorTop, child.Right, separatorTop + dividerHeightPx, _dividerPaint); } }
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 OnDraw(Android.Graphics.Canvas canvas) { // On draw or redraw, we should // get our cached bitmap Bitmap gameTargetBitmap = GetBitmapFromMemCache("target"); // For multiple dragging object, but for // now we only have one. :) foreach (DragObject dObject in dragObjects) { #region Draw transparent target area paint.SetStyle(Paint.Style.Fill); // Set tranparent paint // Change this to another ARGB color to // see the target area paint.SetARGB(128, 255, 255, 255); // Coords for target drop area const int x1 = 767; const int x2 = 990; const int y1 = 204; const int y2 = 560; // Draw target area canvas.DrawRect(x1, y1, x2, y2, paint); // Set target drop area for our check if the // dragged object is within the drop area bounds this.targetDropX1 = x1; this.targetDropX2 = x2; this.targetDropY1 = y1; this.targetDropY2 = y2; // Offset the bitmap overlay just a // bit to look nice const int xOffset = 10; const int yOffset = 10; // Draw target bitmap overlay canvas.DrawBitmap(gameTargetBitmap, targetDropX1 + xOffset, targetDropY1 + yOffset, null); #endregion Draw transparent target area with a image overlay // Draw object bitmap to drag canvas.DrawBitmap(dObject.GetBitmap(), dObject.GetX(), dObject.GetY(), null); } }
protected override void OnDraw(Android.Graphics.Canvas canvas) { if (mixerValue == null) // don't do anything if we're not connected to a mixervalue return; if (bmp == null) { bmp = BitmapFactory.DecodeResource (Resources, Resource.Drawable.Fader_Knob); Bitmap scaled = Bitmap.CreateScaledBitmap (bmp, 25, 55, true); bmp.Recycle(); bmp = scaled; } int margin = 60; float radius = 4; int center = (Width / 2) + 5; int minY1 = margin - (bmp.Height / 2); int maxY1 = Height - margin - (bmp.Height / 2); rangeY = maxY1 - minY1; float factor = (float)mixerValue.GetValue() / (float)maxValue; bitmapX1 = center - bmp.Width / 2; bitmapY1 = maxY1 - (int)(factor * (float)rangeY); base.OnDraw (canvas); var paint = new Paint (); paint.Color = Color.White; paint.TextAlign = Paint.Align.Center; paint.TextSize = (float)12.0; paint.SetTypeface(Typeface.DefaultBold); if (channel_name != null) canvas.DrawText (channel_name, center - 5, 14, paint); // align with pan control int levelX1 = center - (bmp.Width / 2) - 2; int levelX2 = center + (bmp.Width / 2); paint.TextSize = (float)10.0; paint.TextAlign = Paint.Align.Right; foreach (var level in faderLevels) { float factorLevel = (float)level.Key / (float)maxValue; int levelY = maxY1 - (int)(factorLevel * (float)rangeY) + (bmp.Height / 2); canvas.DrawRect (levelX1, levelY - 1, levelX2, levelY, paint); canvas.DrawText (level.Value, levelX1 - 4, levelY + 3, paint); } paint.Color = Color.DarkGray; RectF rect = new RectF (center - 2, margin, center + 2, Height - margin); canvas.DrawRoundRect(rect, radius, radius, paint); paint.Color = Color.Black; rect = new RectF (center - 1, margin + 1, center + 1, Height - margin - 1); canvas.DrawRoundRect(rect, radius, radius, paint); bitmapX2 = bitmapX1 + bmp.Width; bitmapY2 = bitmapY1 + bmp.Height; if (isActive) { paint.Alpha = 255; } else { paint.Alpha = 180; } canvas.DrawBitmap (bmp, bitmapX1, bitmapY1, paint); //bmp.Recycle (); }
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; } } }
public override void Draw (Android.Graphics.Canvas canvas, MapView mapView, bool shadow) { base.Draw (canvas, mapView, shadow); var paint = new Paint (); paint.AntiAlias = true; paint.Color = Color.Purple; // to draw fixed graphics that will not move or scale with the map //canvas.DrawRect (0, 0, 100, 100, paint); // to draw graphics at a geocoded location that move and scale with the map var gp = new GeoPoint ((int)41.940542E6, (int)-73.363447E6); var pt = mapView.Projection.ToPixels (gp, null); float distance = mapView.Projection.MetersToEquatorPixels (20000); canvas.DrawRect (pt.X, pt.Y, pt.X + distance, pt.Y + distance, paint); }
public override void Draw(Android.Graphics.Canvas canvas) { if (Control == null) return; Control.CreateGraphicBuffers(); if (origMatrix == null) { origMatrix = new Android.Graphics.Matrix(); origMatrix.Set (canvas.Matrix); } if (hMatrix == null) { hMatrix = new Android.Graphics.Matrix(); hMatrix.Set(origMatrix); hMatrix.PostTranslate(-Control.offBmp.Width, 0); hMatrix.PostScale(-1, 1); } if (vMatrix == null) { vMatrix = new Android.Graphics.Matrix(); vMatrix.Set(origMatrix); vMatrix.PostTranslate(0, -Control.offBmp.Height); vMatrix.PostScale(1, -1); } var ctime = System.Environment.TickCount; var realupdate = false; Fleux.UIElements.Canvas.drawtime = 0; /**/ if (Control.offNeedExtraDraw && Control.offUpdated) lock(Control.offBmp){ Control.offNeedExtraDraw = false; Control.offUpdated = false; Control.offBmpDraw = true; Control.Draw(new PaintEventArgs(Control.offGr, new Rectangle(0,0, Control.offBmp.Width, Control.offBmp.Height))); Control.offBmpDraw = false; updcnt++; realupdate = true; } //*/ lock(Control.offBmp) { if (Fleux.Core.FleuxApplication.HorizontalMirror) { canvas.Matrix = hMatrix; }else if (Fleux.Core.FleuxApplication.VerticalMirror) { canvas.Matrix = vMatrix; }else canvas.Matrix = origMatrix; // Thats for FastGraphics.cs Control.offGr.Flush(); canvas.DrawBitmap(Control.offBmp.ABitmap, 0,0, paint); Control.offUpdated = false; updcntflush++; } if (PerfData) { ctime = System.Environment.TickCount - ctime; //if (realupdate) { 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; } } }
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(); } }
public void DoDraw(Android.Graphics.Canvas canvas) { canvas.DrawRect(0f,_offset,100,_offset+100,rectPaint); }