Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. using Android.Content;
  2. using Android.Graphics;
  3. using Android.Util;
  4. using Android.Views;
  5.  
  6. namespace Droid
  7. {
  8. public class FreeDrawView : View
  9. {
  10. Path _drawPath;
  11. Paint _drawPaint;
  12. Paint _canvasPaint;
  13. Canvas _drawCanvas;
  14. Bitmap _canvasBitmap;
  15. Color _currentLineColor;
  16. float _penWidth;
  17.  
  18. public Bitmap Image
  19. {
  20. get
  21. {
  22. return GetDrawingCache(false);
  23. }
  24. }
  25.  
  26. public FreeDrawView(Context context)
  27. : base(context)
  28. {
  29. Init();
  30. }
  31.  
  32. public FreeDrawView(Context context, IAttributeSet attrs)
  33. : base(context, attrs)
  34. {
  35. Init();
  36. }
  37.  
  38. public FreeDrawView(Context context, IAttributeSet attrs, int defStyle)
  39. : base(context, attrs, defStyle)
  40. {
  41. Init();
  42. }
  43.  
  44. void Init()
  45. {
  46. _currentLineColor = Color.Black;
  47. _penWidth = 8.0f;
  48.  
  49. _drawPath = new Path();
  50. _drawPaint = new Paint
  51. {
  52. Color = _currentLineColor,
  53. AntiAlias = true,
  54. StrokeWidth = _penWidth
  55. };
  56.  
  57. _drawPaint.SetStyle(Paint.Style.Stroke);
  58. _drawPaint.StrokeJoin = Paint.Join.Round;
  59. _drawPaint.StrokeCap = Paint.Cap.Round;
  60.  
  61. _canvasPaint = new Paint
  62. {
  63. Dither = true
  64. };
  65.  
  66. DrawingCacheEnabled = true;
  67. DrawingCacheBackgroundColor = Color.White;
  68. }
  69.  
  70. protected override void OnSizeChanged(int w, int h, int oldw, int oldh)
  71. {
  72. base.OnSizeChanged(w, h, oldw, oldh);
  73.  
  74. _canvasBitmap = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888);
  75. _drawCanvas = new Canvas(_canvasBitmap);
  76. }
  77.  
  78. protected override void OnDraw(Canvas canvas)
  79. {
  80. base.OnDraw(canvas);
  81.  
  82. _drawPaint.Color = _currentLineColor;
  83. canvas.DrawBitmap(_canvasBitmap, 0, 0, _canvasPaint);
  84. canvas.DrawPath(_drawPath, _drawPaint);
  85. }
  86.  
  87. public override bool OnTouchEvent(MotionEvent e)
  88. {
  89. var touchX = e.GetX();
  90. var touchY = e.GetY();
  91.  
  92. switch (e.Action)
  93. {
  94. case MotionEventActions.Down:
  95. _drawPath.MoveTo(touchX, touchY);
  96. break;
  97. case MotionEventActions.Move:
  98. _drawPath.LineTo(touchX, touchY);
  99. break;
  100. case MotionEventActions.Up:
  101. _drawCanvas.DrawPath(_drawPath, _drawPaint);
  102. _drawPath.Reset();
  103. break;
  104. default:
  105. return false;
  106. }
  107.  
  108. Invalidate();
  109.  
  110. return true;
  111. }
  112.  
  113. public void Clear()
  114. {
  115. _drawCanvas = new Canvas(_canvasBitmap);
  116. Invalidate();
  117. }
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement