Quiero saber si hay algún método para hacer una vista a la imagen? como una captura de pantalla, pero puedo especificar cualquier vista para ese método. Sé cómo hacerlo en ios. Saving view content, pero ¿cómo puedo hacerlo en mac os?cacao: ¿cómo hacer una vista a la imagen?
Respuesta
Existen varias formas, pero ninguna de ellas funciona perfecta. Muchos problemas están relacionados con las vistas de Layer Backed.
si usted no tiene respaldo capa o puntos de vista de alojamientos que usted puede utilizar este código:
NSData* data = [mainView dataWithPDFInsideRect:[mainView bounds]];
NSImage *img = [[NSImage alloc] initWithData:data];
si se trabaja con vistas a base de capas:
hasta 10.8 de la mejor manera para mí fue
NSSize mySize = mapImage.bounds.size;
NSSize imgSize = NSMakeSize(mySize.width, mySize.height);
NSBitmapImageRep *bir = [mapImage bitmapImageRepForCachingDisplayInRect:[mapImage bounds]];
[bir setSize:imgSize];
[mapImage cacheDisplayInRect:[mapImage bounds] toBitmapImageRep:bir];
caheImg = [[NSImage alloc]initWithSize:imgSize];
[caheImg addRepresentation:bir];
pero en 10.8 bitmapImageRepForCachingDisplayInRect
dejó de funcionar con vistas de Layer Backed.
no es una opción para hacer una captura de pantalla de la pantalla y recortar su punto de vista:
+ (NSImage*) screenCacheImageForView:(NSView*)aView
{
NSRect originRect = [aView convertRect:[aView bounds] toView:[[aView window] contentView]];
NSRect rect = originRect;
rect.origin.y = 0;
rect.origin.x += [aView window].frame.origin.x;
rect.origin.y += [[aView window] screen].frame.size.height - [aView window].frame.origin.y - [aView window].frame.size.height;
rect.origin.y += [aView window].frame.size.height - originRect.origin.y - originRect.size.height;
CGImageRef cgimg = CGWindowListCreateImage(rect,
kCGWindowListOptionIncludingWindow,
(CGWindowID)[[aView window] windowNumber],
kCGWindowImageDefault);
return [[NSImage alloc] initWithCGImage:cgimg size:[aView bounds].size];
}
Estoy usando este código en mi aplicación, que funciona muy bien.
Sin embargo, si arrastro la aplicación a un monitor secundario, la captura de pantalla se descarta y me capturan correctamente.
El siguiente código fija esa cuestión (También he eliminado algunas matemáticas redundantes de cálculo en la que se va a restar un campo y luego agregado) en caso de que alguien se cruce en el futuro:
NSRect originRect = [aView convertRect:[aView bounds] toView:[[aView window] contentView]];
NSArray *screens = [NSScreen screens];
NSScreen *primaryScreen = [screens objectAtIndex:0];
NSRect rect = originRect;
rect.origin.y = 0;
rect.origin.x += [aView window].frame.origin.x;
rect.origin.y = primaryScreen.frame.size.height - [aView window].frame.origin.y - originRect.origin.y - originRect.size.height;
- 1. mostrando una imagen en cacao
- 2. convertir doc html a la imagen en el cacao
- 3. cacao: Cómo hacer un fondo transparente webView?
- 4. Cacao: Cómo transformar una imagen de arrastre mientras arrastra
- 5. ¿Cómo hacer referencia a la vista "máxima"?
- 6. Eliminar la imagen de una vista de imagen Android
- 7. Mostrar imagen en una aplicación de estado de cacao
- 8. Vista personalizada de cacao para NSMenuItem
- 9. ¿Cómo convertirías cualquier documento a una imagen de vista previa?
- 10. Adición Fling gesto a una vista de la imagen - Android
- 11. Cómo establecer la imagen de fondo de una vista?
- 12. Cómo mostrar el borde a la vista de imagen?
- 13. Android, hacer una imagen en una URL igual a la imagen de ImageView
- 14. android - Cómo cortar una parte de la imagen y mostrarla en la vista de la imagen
- 15. Cómo hacer mediante programación de aplicaciones de cacao activa
- 16. Android: Desplazamiento de una vista de imagen
- 17. paso de imagen de una vista a otra
- 18. Cómo hacer que una imagen gire continuamente?
- 19. ¿Cómo puedo convertir una vista a Drawable?
- 20. ¿Cómo presionar una vista, regresar y volver a la vista?
- 21. Enfoque en android: mantener la imagen a la vista
- 22. Cómo hacer referencia a otros documentos en una vista couchDB (uniéndose a la funcionalidad similar)
- 23. ¿Cómo hacer que QWebKit muestre la imagen?
- 24. Cacao: pasar argumentos a NSApplicationDelegate
- 25. Establecer posición de vista arriba a la derecha mediante programación en toque de cacao
- 26. cómo utilizar el LightingColorFilter para hacer la forma de una imagen oscura a la luz
- 27. Ajustar la imagen en la vista web
- 28. Cómo hacer zoom en una vista de texto en android?
- 29. Crear una imagen única (GUID a la imagen)
- 30. ¿Cómo hacer una macro Jinja2 desde una vista invocable?
+1 respuesta completa – Vervious
muchas gracias! – NOrder
Su versión con bitmapImageRepForCachingDisplayInRect funciona bien para mí en 10.7 para una vista respaldada por capas y agregué su screenCacheImageForView para 10.8 - actualizado desde algunos días a 10.8.3, pero screenCacheImageForView causa problemas con mi vista (que tiene 2 etiquetas NSTextField adicionales en la parte superior y erróneamente incluido en la captura de pantalla de la vista). Pero: en 10.8.3, el bitmapImageRepForCachingDisplayInRect funciona bien, ¿no es así antes de 10.8.3? – konran