2011-03-28 5 views
5

Comment puis-je dessiner dans une UIImage existante en utilisant monotouch?Dessiner dans UIImage

je charge une image: UIImage.FromFile ("MyImage.png")

Ensuite, je veux dessiner une chaîne et quelques lignes dans cette image.

Est-ce que quelqu'un a un échantillon de code?

Thx

Répondre

10

Voici une méthode qui le fait:

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 vous placez cette méthode dans une sous-classe de UIImageView et appelez de touchesBegan et touchesMoved, lorsque vous touchez l'écran, il attirera sur l'image.

Questions connexes