2011-03-28 9 views
5

¿cómo puedo dibujar en un UIImage existente usando monotouch?Dibujar en UIImage

me carga una imagen: UIImage.FromFile ("MyImage.png")

luego quiero dibujar una cadena y algunas líneas en esta imagen.

¿Alguien tiene un ejemplo de código?

Thx

Respuesta

10

Aquí es un método que lo hace:

private void drawOnTouch(object data) 
{ 

    UITouch touch = data as UITouch; 

    if (null != touch) 
    { 

     UIGraphics.BeginImageContext(this.Image == null ? this.Frame.Size : this.Image.Size); 

     using (CGContext cont = UIGraphics.GetCurrentContext()) 
     { 

      if (this.Image != null) 
      { 

       cont.TranslateCTM(0f, this.Image.Size.Height); 
       cont.ScaleCTM(1.0f, -1.0f); 
       cont.DrawImage(new RectangleF(0f,0f,this.Image.Size.Width, this.Image.Size.Height), this.Image.CGImage); 
       cont.ScaleCTM(1.0f, -1.0f); 
       cont.TranslateCTM(0f, -this.Image.Size.Height); 


      } //end if 

      PointF lastLocation = touch.PreviousLocationInView(this); 
      PointF pt = touch.LocationInView(this); 
      using (CGPath path = new CGPath()) 
      { 

       cont.SetLineCap(CGLineCap.Round); 
       cont.SetLineWidth(3); 
       cont.SetRGBStrokeColor(0, 2, 3, 1); 
       path.MoveToPoint(lastLocation.X, lastLocation.Y); 
       path.AddLines(new PointF[] { new PointF(lastLocation.X, 
           lastLocation.Y), 
          new PointF(pt.X, pt.Y) }); 
       path.CloseSubpath(); 

       cont.AddPath(path); 
       cont.DrawPath(CGPathDrawingMode.FillStroke); 
       this.Image = UIGraphics.GetImageFromCurrentImageContext(); 

      }//end using path 


     }//end using cont 
     UIGraphics.EndImageContext(); 
     this.SetNeedsDisplay(); 

    }//end if 


}//end void drawOnTouch 

Si coloca este método en una subclase de UIImageView y desde el cual lo touchesBegan y TouchesMoved, cuando se toca la pantalla dibujará en la imagen.