Blättern in einem Multiframe Image

Zappie
Hallo,

nachdem mir nicht der richtige Weg einfallen möchte, wollte ich mal hier nachfragen, ob schon einer von euch so eine Aufgabe gelöst hat?

Folgendes war der Ansatz:

XML-Code:
        <Image Margin="200,15,15,40" Name="ImageControl" Stretch="Uniform" Grid.Row="1">
            <Image.Source>
                <BitmapImage UriSource="Images\sample.tif" x:Name="bmpTiffReport" />
            </Image.Source>
        </Image>

C#-Code:
    public partial class MainWindow : RibbonWindow
    {
        BitmapImage _CurrentImage;
        int _CurrentFrame;

C#-Code:
        private void btnNextTiffPage_Click(object sender, RoutedEventArgs e)
        {
            if (_CurrentImage == null)
            {
                _CurrentImage = bmpTiffReport;

                _CurrentFrame = 0;
            }

            TiffBitmapDecoder dec = new TiffBitmapDecoder(_CurrentImage.UriSource, BitmapCreateOptions.None, BitmapCacheOption.None);
            if (dec.Frames.Count > _CurrentFrame + 1)
            {
                _CurrentFrame += 1;

            }

            ImageControl.Source = dec.Frames[_CurrentFrame];

Generell funktioniert das. Nur wenn ich jetzt den nächsten Schritt machen möchte und die Datei zur Laufzeit erst öffne stimmt natürlich die URISOURCE nicht mehr.

Würde mich freuen, wenn vielleicht einer einen Denkansatz für mich hat...


Gruß,
Zappie
MrSparkle
Hi Zappie,

Zitat von Zappie:
Nur wenn ich jetzt den nächsten Schritt machen möchte und die Datei zur Laufzeit erst öffne stimmt natürlich die URISOURCE nicht mehr.

Das hat aber nichts damit zu tun, ob du ein Multiframe-TIF hast oder nicht. Wenn die Bilddatei nicht gefunden wird, hat das andere Gründe. Evtl. mußt du die Datei als eingebettete Resource in dein Projekt kompilieren, oder halt den Pfad so anpassen, daß die Datei gefunden wird.

Christian
Zappie
Hi,

nicht das etwas falsch verstanden wird, das öffnen der Datei klappt wunderbar.
Nur bei einem Mehrseitigem Dokument kann ich halt nicht blättern.

In meinem Ansatz habe ich es erstmal mit einer Statischen Datei versucht, als Ressource, aber das muss ja auch ohne einbinden der Datei in die Ressourcen gehen oder!?
MrSparkle
Hi Zappie,

jetzt weiß ich erst Recht nicht, was funktioniert und was nicht. Eben sagtest du, generell funktioniert alles, nur die Datei wird zur Laufzeit nicht gefunden. Am besten erklärst du nochmal genau, was nicht geht und welche Fehler dabei auftreten.
Was bedeuted z.B. eine statische Datei als Resource? Wenn du nicht auf Resourcen zugreifst, mußt du natürlich den richtigen Pfad der Datei angeben. Bei einem relativen Pfad muß sich die Datei auch an genau der Stelle befinden, sonst gibt es einen Fehler. Klär uns mal auf, wo dein Problem liegt.

Christian
Zappie
Hi,

ich versuche es ;-)

Also das öffnen einer Bilddatei, nur um die erste Seite anzuzeigen, klappt. Dort mache ich über Datei --> Öffnen --> OpenFileDialog die Datei auf und übergebe dem Programm den Pfad über den Dialog.

Wenn ich aber jetzt eine Multipagedatei öffne, will ich ja nicht nur die erste Seite sehen, ich möchte ja schließlich auch darin blättern können.
Und dort ist genau das Problem...das Bild ist offen und ich kann es sehen aber ich kann nicht darin blättern :(

Deswegen meine Frage, ob jemand schon einen Weg gefunden hat, durch die einzelnen Bildframes zu blättern, ohne sie als feste Ressource einzubinden, sondern ganz normal über FileOpenDialog!?


Gruß,
Volker
MrSparkle
Hi Zappie,

irgendwie widersprechen sich deine Beiträge. Zuerst schreibst du:

Zitat:
Generell funktioniert das. Nur wenn ich jetzt den nächsten Schritt machen möchte und die Datei zur Laufzeit erst öffne stimmt natürlich die URISOURCE nicht mehr.

Also funktioniert das Öffnen der Datei nicht?

Dann schreibst du aber:

Zitat:
Also das öffnen einer Bilddatei, nur um die erste Seite anzuzeigen, klappt.

Also funktioniert das Blättern nicht?


Ich werde daraus jedenfalls nicht schlau.

Christian
Zappie
Manchmal sind es vielleicht zu viele Worte die man nutzt um einfache Fragen zu stellen ;-)

Öffnen einer Datei klappt

Das Blättern innerhalb dieser Datei (weil Multipage), klappt nicht


Ich brauche lediglich eine Information wie man in einer Mutlipage bzw. Multiframe-Datei blättern kann.
MrSparkle
Hi Zappie,

ok, dann schreib das doch gleich so! Allerdings ist "klappt nicht" auch keine Fehlerbeschreibung, die irgendwem weiterhelfen könnte. Was mir bei deinem Code aufgefallen ist: Wenn _CurrentImage null ist, dann gibt es eine NullReferenceException.

Wie du Frames aus dem Tiff extrahieren kannst, kannst du bei  Google nachschauen. Einer der ersten Ergebnisse ist  dieser Beitrag bei StackOverflow.

Christian
Zappie
Hallo MrSparkle,

Wenn _CurrentImage null ist, dann wird der Code weiter unten ausgeführt, so wie es auch geplant ist.

Google habe ich bereits mehrfach genutzt und auch diesen Beitrag kenne ich schon, jedoch will ich keine Seiten extrahieren (dafür habe ich schon eine eigene Klasse geschrieben), ich will einfach nur durch die Frames blättern können, wie in meinem Code ja schon angedeutet.

Trotzdem danke für den Versuch mich zu unterstützen...leider scheint das Problem noch keiner gelöst zu haben :-(


Gruß,
Volker