Xamarin.Android kullanıyorum ve List
adresinden TouchEvent
tarafından doldurulmuş olan daireler çizmek istiyorum. _points
önceden tanımlanmış olduğunda sadece çalışırListeden noktalar çizilemiyor
public class Ceiling : View
{
private List<PointF> _points;
private Canvas _canvas;
private Paint paint;
protected Ceiling(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public Ceiling(Context context) : base(context)
{
_points = new List<PointF>();
paint = new Paint
{
Color = Color.Red
};
paint.SetStyle(Paint.Style.Fill);
Touch += OnTouch;
}
public Ceiling(Context context, IAttributeSet attrs) : base(context, attrs)
{
}
public Ceiling(Context context, IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr)
{
}
public Ceiling(Context context, IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes)
{
}
protected override void OnDraw(Canvas canvas)
{
base.OnDraw(canvas);
if (_canvas == null)
{
_canvas = canvas;
Background = new PaintDrawable(Color.AliceBlue);
canvas.SetViewport(Width, Height);
}
base.OnDraw(canvas);
if (_points.Count > 0)
{
foreach (var point in _points)
canvas.DrawCircle(point.X, point.Y, 10, paint);
}
}
private void OnTouch(object sender, TouchEventArgs e)
{
switch (e.Event.Action)
{
case MotionEventActions.Down:
{
var point = new PointF(e.Event.GetX(), e.Event.GetY());
if (!_points.Contains(point))
{
_points.Add(point);
_canvas.DrawCircle(point.X, point.Y, 10, paint);
}
break;
}
}
}
}
: İşte benim kodudur. Bu işi nasıl yapabilirim?
Taşı alan tanımlamak yere kurucuda _points' 'başlatılması . –
Çalışmıyor. –
Neyin yanlış gittiğini açıklamanız gerekiyor. –