public override UITableViewCell GetCell (UITableView tv)
{
var cell = tv.DequeueReusableCell (ikey);
if (cell == null){
cell = new UITableViewCell (UITableViewCellStyle.Default, ikey);
}
if (scaled == null)
return cell;
Section psection = Parent as Section;
bool roundTop = psection.Elements [0] == this;
bool roundBottom = psection.Elements [psection.Elements.Count-1] == this;
using (var cs = CGColorSpace.CreateDeviceRGB ()){
using (var bit = new CGBitmapContext (IntPtr.Zero, dimx, dimy, 8, 0, cs, CGImageAlphaInfo.PremultipliedFirst)){
if (roundBottom){
bit.AddArc (rad, rad, rad, (float) Math.PI, (float) (3*Math.PI/2), false);
} else {
bit.MoveTo (0, rad);
bit.AddLineToPoint (0, 0);
}
bit.AddLineToPoint (dimx, 0);
bit.AddLineToPoint (dimx, dimy);
if (roundTop){
bit.AddArc (rad, dimy-rad, rad, (float) (Math.PI/2), (float) Math.PI, false);
bit.AddLineToPoint (0, rad);
} else {
bit.AddLineToPoint (0, dimy);
}
bit.Clip ();
bit.DrawImage (rect, scaled.CGImage);
cell.ImageView.Image = UIImage.FromImage (bit.ToImage ());
}
}
return cell;
}