
Visor de imágenes independiente que muestra una ImageSource (URL, base64 o bytes en bruto) y superpone Chrome opcional en capas: un marco bordeado, una barra de herramientas con rotar / voltear / ampliar / pantalla completa, botones de descarga e interacciones de recorte. Para la edición encadernada por columnas (zona de drop, subida, validación) úsalo ImageEdit en su lugar.
Default — un tamaño liso <img> respecto a su padre. No hay cromo.

Añade un borde, un relleno y un botón de descarga en la esquina. Esta es la forma ImageEdit de vista previa de solo lectura que usa.

Añade botones de rotación (CCW/CW), girar (H/V), zoom/alejar, reiniciar, pantalla completa y descargar. La imagen responde al zoom de rueda (anclada en el cursor) y, al ampliar más allá de 1×, arrastrar para panear.

Activa un selector de relación de aspecto y un botón de Recorte. Arrastrar a la izquierda en la imagen dibuja un rectángulo de selección discontinuo (restringido al aspecto elegido). Pulsar Recortar rasteriza la selección a PNG mediante un lienzo fuera de pantalla y dispara OnCropApplied; el visor entonces muestra el resultado recortado. El reinicio vuelve a la fuente original.

Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Alt | string? | Texto alternativo accesible. Por defecto se ImageViewer.FileName aplica si no está activado. | |
Croppable | bool | False | Cuando es cierto (y ImageViewer.Toolbar también es cierto), permite interacciones de cultivos: la barra de herramientas tiene un selector de relación de aspecto y un botón de Recorte; arrastre a la izquierda en el La imagen dibuja un rectángulo de selección discontinuo. Pulsar Recorte rasteriza la selección a PNG y dispara ImageViewer.OnCropApplied; el visor entonces muestra el resultado recortado. El reinicio vuelve al valor original ImageViewer.Source. |
Downloadable | bool | False | Cuando es cierto, expone una experiencia de usuario descargada:
|
Fallback | RenderFragment? | Se renderiza cuando ImageViewer.Source es nulo. | |
FileName | string? | Nombre del archivo usado al descargar y como texto por defecto ImageViewer.Alt. Vuelve a la propia ImageSource.FileNameimagen, que por lo demás | |
Framed | bool | False | Cuando es cierto, envuelve la imagen en un marco bordeado con Fluent-token, que coincide el estilo de vista previa de solo lectura que |
IsDirty | bool | False | Estado sucio actual — cierto cuando la imagen mostrada difiere de la línea base (rotación, volteo o cultivo aplicado). Estado puro de vista (zoom, paneo) No cambia de suciedad por sí sola. |
OutputFormat | ImageOutputFormat | Auto | Formato de salida para el resultado del recorte rasterizado (y la imagen comprometida bytes de ImageViewer.CommitAsync). Valores predeterminados de ImageOutputFormat.Auto — el formato deriva de la extensión del archivo fuente (las entradas JPEG permanecen en JPEG, todo lo demás emite PNG). Pin a ImageOutputFormat.Png para escrituras sin pérdidas independientemente de la fuente, o ImageOutputFormat.Jpeg para Flujos fotográficos sensibles al tamaño. |
OutputQuality | double | 0,9 | Calidad JPEG en ImageViewer.OutputFormat es ImageOutputFormat.Png (PNG es sin pérdida y no tiene mando de calidad). Por defecto |
Source | ImageSource? | Datos de imagen para renderizar. Cuando es nulo, ImageViewer.Fallback se renderiza en su lugar (o nada si no se suministra respaldo). | |
Toolbar | bool | False | Cuando es cierto, renderiza una barra de herramientas sobre la imagen con rotar / voltear / ampliar / Reinicio / controles a pantalla completa. Implica un elemento envoltorio independientemente de ImageViewer.Framed. El arrastre para panear en la imagen queda disponible cuando Pasé la 1× a toda velocidad. |
AltImageViewer.FileName aplica si no está activado.CroppableImageViewer.Toolbar también es cierto), permite interacciones de cultivos: la barra de herramientas tiene un selector de relación de aspecto y un botón de Recorte; arrastre a la izquierda en el La imagen dibuja un rectángulo de selección discontinuo. Pulsar Recorte rasteriza la selección a PNG y dispara ImageViewer.OnCropApplied; el visor entonces muestra el resultado recortado. El reinicio vuelve al valor original ImageViewer.Source. DownloadableImageViewer.Toolbar, añade un botón de descarga a la barra de herramientas.ImageViewer.Framed (sin barra de herramientas), se muestra un botón de superposición en la esquina.FallbackImageViewer.Source es nulo.FileNameImageViewer.Alt. Vuelve a la propia ImageSource.FileNameimagen, que por lo demás FramedIsDirtyOutputFormatImageViewer.CommitAsync). Valores predeterminados de ImageOutputFormat.Auto — el formato deriva de la extensión del archivo fuente (las entradas JPEG permanecen en JPEG, todo lo demás emite PNG). Pin a ImageOutputFormat.Png para escrituras sin pérdidas independientemente de la fuente, o ImageOutputFormat.Jpeg para Flujos fotográficos sensibles al tamaño.OutputQualityImageViewer.OutputFormat es ImageOutputFormat.Png (PNG es sin pérdida y no tiene mando de calidad). Por defecto SourceImageViewer.Fallback se renderiza en su lugar (o nada si no se suministra respaldo).ToolbarImageViewer.Framed. El arrastre para panear en la imagen queda disponible cuando Pasé la 1× a toda velocidad.Nombre | Tipo | Descripción |
|---|---|---|
OnCancel | EventCallback | Cuando se establece junto con ImageViewer.Toolbar, hace que un rojo quede prohibido- botón circular en el extremo derecho de la barra de herramientas. Siempre activado. Los consumidores suelen usar esto para salir del modo de edición y descartar en proceso transformaciones — El espectador no revierte nada automáticamente; Volver a montarlo (por ejemplo, mediante ImageViewer.Source a Borra su estado interno. |
OnClick | EventCallback<MouseEventArgs> | Haz clic en el manejador en |
OnCropApplied | EventCallback<CropResult> | Se dispara cuando el usuario realiza un recorte. Recibe la carga útil PNG rasterizada. |
OnDirtyChanged | EventCallback<bool> | Se dispara cada vez ImageViewer.IsDirty que cambia. Acciona el botón de guardado de un padre Estado habilitado sin sondeo. |
OnSave | EventCallback | Cuando se configura junto con ImageViewer.Toolbar, se muestra una marca de verificación verde en el extremo derecho de la barra de herramientas. El botón está desactivado mientras El espectador está limpio — no hay nada que salvar. El manejador de clics es fuego- y-olvidar; el consumidor suele llamar ImageViewer.CommitAsync desde aquí para hornear la imagen mostrada a bytes para persistencia. Diseñado para el flujo de edición |
OnCancelImageViewer.Toolbar, hace que un rojo quede prohibido- botón circular en el extremo derecho de la barra de herramientas. Siempre activado. Los consumidores suelen usar esto para salir del modo de edición y descartar en proceso transformaciones — El espectador no revierte nada automáticamente; Volver a montarlo (por ejemplo, mediante ImageViewer.Source a Borra su estado interno.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty que cambia. Acciona el botón de guardado de un padre Estado habilitado sin sondeo.OnSaveImageViewer.Toolbar, se muestra una marca de verificación verde en el extremo derecho de la barra de herramientas. El botón está desactivado mientras El espectador está limpio — no hay nada que salvar. El manejador de clics es fuego- y-olvidar; el consumidor suele llamar ImageViewer.CommitAsync desde aquí para hornear la imagen mostrada a bytes para persistencia. Diseñado para el flujo de edición Nombre | Parámetros | Tipo | Descripción |
|---|---|---|---|
CommitAsync | Task<CropResult> | Hornea la imagen que se muestra actualmente — incluyendo cualquier rotación y se convierte en un PNG en resolución de origen. Devuelve nulo cuando el el visor está limpio (nada que guardar) o antes que el usuario JS adjunto. Cualquier selección de cultivo en progreso que no haya sido comprometida mediante el botón Recorte se ignora intencionadamente; haz clic en recortar primero si Quieres que esté horneado. | |
HandleContainerResize | ImageMeasurements newMeasurements | void | Retorno de redimensionamiento del contenedor — el ResizeObserver del lado JS dispara esto (rAF- debounced) cuando la caja del contenedor de imagen cambia desde fuera de nuestro estado (un padre estirado/redimensionado, el panel refluyendo). La imagen se reajusta mediante object-fit:contain, así que las coordenadas container-pixel de la selección de recorte no Alineación más larga con el mismo contenido de imagen. Vuelve a anclarlo usando la misma Capturar-viejo → actualizar → reproyectar-nuevo viaje de ida HandleFullscreenChange(System.Boolean) y vuelta usos: instantánea de la selección en coordenadas de píxeles naturales frente al redimensionamiento PRE las medidas que aún tenemos, actualizamos a las mediciones POST-redimension, y luego proyecta hacia atrás. Saltado a mitad de la resistencia — los manejadores de resistencia son los responsables de la geometría de selección (y capturaron su propia ventana de abrazadera al arrancar en drag). |
HandleFullscreenChange | bool isFullscreen | Task | Callback de |
HandleKeyDown | string key bool shiftKey | Task | Referencia de keydown basada en JS para los atajos en modo edición. Solo fuegos para las claves que reclamamos (la cuña JS filtra por estado clave + modificador), Así que no tenemos que bloquear este método en sí.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Callback con zoom en rueda — JS reenvía cada tick de desplazamiento (deltaY) más el El cursor está desplazado respecto al centro del contenedor. A continuación se analiza matemáticas ancladas por zoom React: pan_new = (1 − r) · cursorRel + r · pan_prev dónde r = zoom_new / zoom_prev. Mantiene el cursor sobre la misma imagen local Señala a través del escalón de zoom. |
ResetDirtyAsync | Task | Marca el visor como limpio sin cambiar la imagen mostrada. Uso después de un Guardado exitoso: Los bytes recortados ahora son la versión guardada, así que Future Los cambios deben medirse en función de este estado. Para revertir la visualización imagen al original ImageViewer.Source Y limpiar sucio, usa el botón Reiniciar botón de barra de herramientas o actualizar ImageViewer.Source. | |
RevertCrop | void | Elimina solo la superposición local de cultivos — vuelve al original ImageViewer.Source. La rotación y los flips se quedan donde los tiene el usuario, Así que si esos cambios cambiaron desde la última partida, ImageViewer.IsDirty puede Mantente fiel. Usa el botón Reiniciar de la barra de herramientas (o actualizando ImageViewer.Source) para una reversión completa. |
CommitAsyncHandleContainerResizeHandleFullscreenChange(System.Boolean) y vuelta usos: instantánea de la selección en coordenadas de píxeles naturales frente al redimensionamiento PRE las medidas que aún tenemos, actualizamos a las mediciones POST-redimension, y luego proyecta hacia atrás. Saltado a mitad de la resistencia — los manejadores de resistencia son los responsables de la geometría de selección (y capturaron su propia ventana de abrazadera al arrancar en drag).HandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (si está cableado).ImageViewer.OnSave invoca si está sucio.HandleWheelResetDirtyAsyncImageViewer.Source Y limpiar sucio, usa el botón Reiniciar botón de barra de herramientas o actualizar ImageViewer.Source.RevertCropImageViewer.Source. La rotación y los flips se quedan donde los tiene el usuario, Así que si esos cambios cambiaron desde la última partida, ImageViewer.IsDirty puede Mantente fiel. Usa el botón Reiniciar de la barra de herramientas (o actualizando ImageViewer.Source) para una reversión completa.