
Eigenständiger Bildviewer, der eine ImageSource (URL, base64 oder Rohbytes) rendert und optionale Chrome-Schichten oben drauflegt: einen umrandeten Rahmen, eine Symbolleiste mit Drehen / Umblättern / Zoomen / Vollbild, Download-Buttons und Zuschneide-Interaktionen. Für spaltengebundene Bearbeitung (Dropzone, Upload, Validierung) verwenden ImageEdit Sie stattdessen.
Standard – eine einfache <img> Größe im Vergleich zu ihrem Elternsystem. Kein Chrom.

Fügt einen Rand, eine Polsterung und einen Eck-Download-Button hinzu. Dies ist die nur-lesebasierte Vorschauform, ImageEdit die verwendet wird.

Fügt Drehen (CCW/CW), Umdrehen (H/V), Zoomen/Rauszoomen, Zurücksetzen, Vollbild- und Download-Buttons hinzu. Das Bild reagiert auf Rad-Zoom (am Cursor verankert) und beim Überschreiten von 1× auf Drag-to-Pan.

Ermöglicht einen Aspektverhältnis-Picker und eine Zuschneide-Taste. Das linke Ziehen auf dem Bild zeichnet ein gestricheltes Auswahlrechteck (auf den gewählten Aspekt beschränkt). Das Drücken von "Zuschneiden" rasterisiert die Auswahl zu PNG über eine Offscreen-Leinwand und startet OnCropApplied; der Betrachter zeigt dann das zugeschnittene Ergebnis an. Der Reset setzt auf die ursprüngliche Quelle zurück.

Name | Typ | Default | Beschreibung |
|---|---|---|---|
Alt | string? | Zugänglicher Alternativtext. Standardmäßig aktiviert ImageViewer.FileName , wenn nicht gesetzt. | |
Croppable | bool | False | Wenn wahr (und ImageViewer.Toolbar auch wahr ist), ermöglicht Crop-Interaktionen: die Symbolleiste erhält einen Aspektverhältnis-Picker und eine Schaltfläche 'Zuschneiden'; Links-Drag auf der Das Bild zeichnet ein gestricheltes Auswahlrechteck. Das Drücken von Crop rasterisiert die Auswahl auf PNG und feuert ImageViewer.OnCropApplied; der Betrachter zeigt dann die Beschnittenes Ergebnis. Reset setzt auf das Original ImageViewer.Sourcezurück. |
Downloadable | bool | False | Wenn zutreffend, gibt es eine Download-UX frei:
|
Fallback | RenderFragment? | Gerendert, wenn ImageViewer.Source null ist. | |
FileName | string? | Dateiname, der beim Herunterladen verwendet wird und als Standardtext ImageViewer.Alt . Greift auf das eigene ImageSource.FileName, ansonsten | |
Framed | bool | False | Wenn true, wird das Bild in ein Fluent-tokened Rahmen-Matching eingewickelt der von |
IsDirty | bool | False | Aktueller schmutziger Zustand – wahr, wenn das angezeigte Bild sich von der Basislinie (Rotation, Umdrehen oder angepflanzter Schnitt). Reiner Ansichtszustand (Zoom, Pan) Schaltet Dirty nicht von selbst um. |
OutputFormat | ImageOutputFormat | Auto | Ausgabeformat für das rasterisierte Ausschnittergebnis (und das committierte Bild) Bytes aus ImageViewer.CommitAsync). Standardeinstellungen zu ImageOutputFormat.Auto — das Format stammt aus dem Die Endung der Quelldatei (JPEG-Eingaben bleiben JPEG, alles andere wird ausgegeben PNG). Pinnen auf ImageOutputFormat.Png für verlustfreie Schreibvorgänge unabhängig von der Quelle, oder ImageOutputFormat.Jpeg für Größenabhängige Fotofließe. |
OutputQuality | double | 0,9 | JPEG-Qualität in ImageViewer.OutputFormat ist ImageOutputFormat.Png (PNG ist verlustfrei und hat keine Qualitätsknopf). Standardeinstellung |
Source | ImageSource? | Bilddaten zum Rendern. Wenn null, ImageViewer.Fallback wird gerendert stattdessen (oder gar nichts, wenn kein Rückfall bereitgestellt wird). | |
Toolbar | bool | False | Wenn zutreffend, rendert er eine Symbolleiste über dem Bild mit Drehen / Umdrehen / Zoomen / Reset / Vollbildsteuerung. Impliziert ein Wrapper-Element unabhängig von ImageViewer.Framed. Das Drag-to-Pan auf dem Bild wird verfügbar, wenn Vorbei 1×. |
AltImageViewer.FileName , wenn nicht gesetzt.CroppableImageViewer.Toolbar auch wahr ist), ermöglicht Crop-Interaktionen: die Symbolleiste erhält einen Aspektverhältnis-Picker und eine Schaltfläche 'Zuschneiden'; Links-Drag auf der Das Bild zeichnet ein gestricheltes Auswahlrechteck. Das Drücken von Crop rasterisiert die Auswahl auf PNG und feuert ImageViewer.OnCropApplied; der Betrachter zeigt dann die Beschnittenes Ergebnis. Reset setzt auf das Original ImageViewer.Sourcezurück. DownloadableImageViewer.Toolbarfügt ein Download-Button in die Werkzeugleiste hinzu.ImageViewer.Framed ) wird in der Ecke eine Overlay-Schaltfläche gerendert.FallbackImageViewer.Source null ist.FileNameImageViewer.Alt . Greift auf das eigene ImageSource.FileName, ansonsten FramedIsDirtyOutputFormatImageViewer.CommitAsync). Standardeinstellungen zu ImageOutputFormat.Auto — das Format stammt aus dem Die Endung der Quelldatei (JPEG-Eingaben bleiben JPEG, alles andere wird ausgegeben PNG). Pinnen auf ImageOutputFormat.Png für verlustfreie Schreibvorgänge unabhängig von der Quelle, oder ImageOutputFormat.Jpeg für Größenabhängige Fotofließe.OutputQualityImageViewer.OutputFormat ist ImageOutputFormat.Png (PNG ist verlustfrei und hat keine Qualitätsknopf). Standardeinstellung SourceImageViewer.Fallback wird gerendert stattdessen (oder gar nichts, wenn kein Rückfall bereitgestellt wird).ToolbarImageViewer.Framed. Das Drag-to-Pan auf dem Bild wird verfügbar, wenn Vorbei 1×.Name | Typ | Beschreibung |
|---|---|---|
OnCancel | EventCallback | Setzt man zusammen mit ImageViewer.Toolbar, macht ein Rot verboten – Kreis-Button am rechten Ende der Werkzeugleiste. Immer aktiviert. Konsumenten nutzen dies typischerweise, um den Edit-Modus zu beenden und während des Prozesses zu verwerfen transformiert – der Betrachter setzt nichts automatisch zurück; Wieder einbauen (z. B. über ImageViewer.Source Seinen inneren Zustand löschen. |
OnClick | EventCallback<MouseEventArgs> | Klicke auf Handler auf |
OnCropApplied | EventCallback<CropResult> | Feuert, wenn der Nutzer einen Crop ausführt. Empfängt die rasterisierte PNG-Nutzlast. |
OnDirtyChanged | EventCallback<bool> | Feuert, wann immer ImageViewer.IsDirty sich etwas ändert. Bedient die Speichertaste eines Elternteils Aktivierte den Bundesstaat ohne Umfragen. |
OnSave | EventCallback | Setzt man zusammen mit ImageViewer.Toolbar, ergibt ein grünes Häkchen Schaltfläche am rechten Ende der Symbolleiste. Der Knopf ist deaktiviert, während Der Betrachter ist sauber – es gibt nichts zu retten. Clickhandler ist Feuer- und-vergessen; Der Verbraucher ruft typischerweise an ImageViewer.CommitAsync von hier, um das ausgestellte Bild zu backen Bytes für Persistenz. Entwickelt für den |
OnCancelImageViewer.Toolbar, macht ein Rot verboten – Kreis-Button am rechten Ende der Werkzeugleiste. Immer aktiviert. Konsumenten nutzen dies typischerweise, um den Edit-Modus zu beenden und während des Prozesses zu verwerfen transformiert – der Betrachter setzt nichts automatisch zurück; Wieder einbauen (z. B. über ImageViewer.Source Seinen inneren Zustand löschen.OnClickOnCropAppliedOnDirtyChangedImageViewer.IsDirty sich etwas ändert. Bedient die Speichertaste eines Elternteils Aktivierte den Bundesstaat ohne Umfragen.OnSaveImageViewer.Toolbar, ergibt ein grünes Häkchen Schaltfläche am rechten Ende der Symbolleiste. Der Knopf ist deaktiviert, während Der Betrachter ist sauber – es gibt nichts zu retten. Clickhandler ist Feuer- und-vergessen; Der Verbraucher ruft typischerweise an ImageViewer.CommitAsync von hier, um das ausgestellte Bild zu backen Bytes für Persistenz. Entwickelt für den Name | Parameter | Typ | Beschreibung |
|---|---|---|---|
CommitAsync | Task<CropResult> | Backt das aktuell angezeigte Bild – einschließlich beliebiger Rotation und flippt – in eine PNG in Quellauflösung. Gibt null zurück, wenn die Viewer ist sauber (nichts zu speichern) oder bevor der JS-Handle hat Angehängt. Jede noch nicht durchgeführte Pflanzenauswahl über die Zuschneide-Schaltfläche absichtlich ignoriert wird; Klicke auf Zuschneiden zuerst, wenn Du willst, dass es eingebacken ist. | |
HandleContainerResize | ImageMeasurements newMeasurements | void | Container-Resize-Callback — der JS-seitige ResizeObserver feuert diesen (rAF- debounced), wenn sich die Box des Bildcontainers von außerhalb unseres Zustands ändert. (ein Elternteil wird gedehnt/verkleinert, das Panel fließt um). Das Bild passt neu an über Object-Fit:Contain, sodass die Container-Pixel-Koordinaten der Crop-Auswahl keine Koordinaten haben Längere Reihen mit demselben Bildinhalt auf. Verankern Sie es erneut mit demselben Capture-old → refresh → reproject-new round-trip HandleFullscreenChange(System.Boolean) Anwendungen: Snapshot der Auswahl in natürlichen Pixelkoordinaten gegen die PRE-Resize Messungen, die wir noch halten, aktualisieren Sie die POST-Resize-Messungen, dann Projiziere zurück. Mitten im Drag übersprungen – die Drag Handler besitzen die Auswahlgeometrie (und erwischte ihr eigenes Klemmfenster beim Zugstart). |
HandleFullscreenChange | bool isFullscreen | Task | Dokumentenebene |
HandleKeyDown | string key bool shiftKey | Task | JS-gesteuerte Keydown-Rückrufe für die Schnittmodus-Verknüpfungen. Nur Feuer für die von uns beanspruchten Schlüssel (der JS-Shim filtert nach Schlüssel + Modifikatorzustand), Wir müssen diese Methode also nicht selbst sperren.
|
HandleWheel | double deltaY double cursorRelX double cursorRelY | Task | Wheel-Zoom-Callback — JS leitet jeden Scroll-Tick (deltaY) plus die Cursor versetzt vom Containerzentrum. Verankerte Zoom-Mathematik folgt React: pan_new = (1 − r) · cursorRel + r · pan_prev wo r = zoom_new / zoom_prev. Hält den Cursor über demselben Bild-lokal Zeige über den Zoom-Schritt. |
ResetDirtyAsync | Task | Markiert den Betrachter sauber, ohne das angezeigte Bild zu verändern. Verwendung nach einem Erfolgreiches Speichern: Die zugeschnittenen Bytes sind jetzt die gespeicherte Version, also zukünftige Veränderungen sollten an diesem Zustand gemessen werden. Um das angezeigte Bild zurückzusetzen Bild zum Original ImageViewer.Source UND reinigen Sie schmutzig, verwenden Sie den Reset Toolbar-Button oder Update ImageViewer.Source. | |
RevertCrop | void | Entfernt nur die lokale Crop-Overlay – kehrt zum Original zurück ImageViewer.Source. Rotation und Flips bleiben dort, wo der Nutzer sie hat, Wenn sich diese also seit dem letzten Speicherstand geändert haben, ImageViewer.IsDirty könnte das Bleib treu. Verwenden Sie den Reset-Button der Toolbar (oder aktualisieren Sie ImageViewer.Source) für eine vollständige Rücksetzung. |
CommitAsyncHandleContainerResizeHandleFullscreenChange(System.Boolean) Anwendungen: Snapshot der Auswahl in natürlichen Pixelkoordinaten gegen die PRE-Resize Messungen, die wir noch halten, aktualisieren Sie die POST-Resize-Messungen, dann Projiziere zurück. Mitten im Drag übersprungen – die Drag Handler besitzen die Auswahlgeometrie (und erwischte ihr eigenes Klemmfenster beim Zugstart).HandleFullscreenChangeHandleKeyDownImageViewer.OnCancel (wenn verdrahtet).ImageViewer.OnSave Sie an, wenn es unsauber ist.HandleWheelResetDirtyAsyncImageViewer.Source UND reinigen Sie schmutzig, verwenden Sie den Reset Toolbar-Button oder Update ImageViewer.Source.RevertCropImageViewer.Source. Rotation und Flips bleiben dort, wo der Nutzer sie hat, Wenn sich diese also seit dem letzten Speicherstand geändert haben, ImageViewer.IsDirty könnte das Bleib treu. Verwenden Sie den Reset-Button der Toolbar (oder aktualisieren Sie ImageViewer.Source) für eine vollständige Rücksetzung.