Frage

Ich habe eine Ansicht mit UIImageView ich dieses UIImageView Bild zuordnen, indem camera..now i einige Zeichnung auf Bild machen wollen .... mit coregraphics.i so etwas wie dies tun wollen ... einen Bereich auswählen, indem Sie berühren und Zeichnungslinie, wenn Linie wollen so etwas wie Kreis oder irgendwelche shape..i schließt sich in etwas anderes zum Beispiel die Farbe wechseln bin in der Lage i .. bis jetzt there.turn dass in Graustufen diesem speziellen Bereich ändern Linie zu zeichnen ... hier ist ein Bild der Linie eine UIImage Ansicht gezeichnet über ...

, aber ich bin nicht in der Lage, es herauszufinden, wie kann ich bei der Imageview image..mean ziehen, wie Imageview Bild ändern ???

Auch ich will Image wiederhergestellt werden, wenn sie auf Löschtaste oder so etwas wie undo..does klicken jemand weiß, wie dies zu erreichen?

und

Wie erstelle ich ein Rechteck, wenn Klick auf die Ernte Taste, um das Rechteck zu bewegen, wo jeder auf dem Bildschirm ... und dann den Knopf drücken um das Bild zu zuzuschneiden ... und dann zugeschnittene Bild speichern ..

War es hilfreich?

Lösung

Dies sind die Schritte:

  1. Erstellen Sie eine CGBitmapContext das Bild der Farbraum und Abmessungen entsprechen.
  2. Zeichnen Sie das Bild in diesem Zusammenhang.
  3. Zeichnen Sie, was Sie auf dem Bild wollen.
  4. Erstellen Sie ein neues Bild aus dem Kontext.
  5. den Kontext entsorgen.

Hier ist ein Verfahren, das ein Bild nimmt, zieht etwas oben drauf und gibt einen neuen UIImage mit modifizierten Inhalt:

- (UIImage*)modifiedImageWithImage:(UIImage*)uiImage
{
    // build context to draw in
    CGImageRef image = uiImage.CGImage;
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    CGContextRef ctx = CGBitmapContextCreate(NULL,
                                             CGImageGetWidth(image), CGImageGetHeight(image),
                                             8, CGImageGetWidth(image) * 4,
                                             colorspace, kCGImageAlphaPremultipliedLast);
    CGColorSpaceRelease(colorspace);

    // draw original image
    CGRect r = CGRectMake(0, 0, CGImageGetWidth(image), CGImageGetHeight(image));
    CGContextSetBlendMode(ctx, kCGBlendModeCopy);
    CGContextDrawImage(ctx, r, image);
    CGContextSetBlendMode(ctx, kCGBlendModeNormal);

    // draw something
    CGContextAddEllipseInRect(ctx, CGRectInset(r, 10, 10));
    CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 0.5f);
    CGContextSetLineWidth(ctx, 16.0f);
    CGContextDrawPath(ctx, kCGPathStroke);

    CGContextAddEllipseInRect(ctx, CGRectInset(r, 10, 10));
    CGContextSetRGBStrokeColor(ctx, 0.7f, 0.0f, 0.0f, 1.0f);
    CGContextSetLineWidth(ctx, 4.0f);
    CGContextDrawPath(ctx, kCGPathStroke);

    // create resulting image
    image = CGBitmapContextCreateImage(ctx);
    UIImage* newImage = [[[UIImage alloc] initWithCGImage:image] autorelease];
    CGImageRelease(image);
    CGContextRelease(ctx);

    return newImage;
}

Um altes Bild wieder herzustellen, hält nur einen Verweis darauf.

Das Zuschneiden Sache ist nicht auf die oben und Sie sollten eine neue Frage für das erstellen.

Andere Tipps

Viele einfachere Lösung wäre

(UIImage *) modifyImage:(UIImage *)inputImage
{
   UIGraphicsBeginImageContext(inputImage.size);
   [inputImage drawInRect:CGRectMake(0, 0, inputImage.size.width, inputImage.size.height);
   CGContextRef ctx = UIGraphicsGetCurrentContext();
   //Drawing code using above context goes here
   /*
    *
    */
   UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   return outputImage;
}

Werfen Sie einen Blick auf Überblick über Quartz 2D Informationen zur Verwendung von Quartz 2D auf dem iPhone.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top