2016-09-20 7 views
1

Ich kann ein Bild "importieren" (eine Datei auswählen) und es in Border in einem InlineUIContainer wickeln.
- Aber dann, wenn ich das Dokument speichern, verschwindet das Bild (sehr kurze Datei).Bilder in einer RichTextBox (FlowDocument)

ODER ich kann es aus der Zwischenablage einfügen (keine Border Wrapper).
- Dann wird es mit dem Dokument gespeichert bekommen - aber ich habe keine Kontrolle über die Anzeige ...

Was die richtige Art und Weise ist ein Bild zu importieren (aus einer Datei) und halten Sie die aktuelle Bitmap
im Flowdocument , so kann es mit dem Rest des RichText gespeichert werden?

EDIT:
Mein Problem scheint zu sein, dass das Bild (in XAML) dargestellt wird mit einer URI
- nicht der tatsächlichen Bitmap - so wie/importiert einbetten es richtig?
Das ist mein Import Code:

string fileName = openFileDialog.FileName; 
BitmapImage bitmap = new BitmapImage(new Uri(fileName, UriKind.Absolute)); 

Image image = new Image(); 
image.Source = bitmap; 
image.Width = bitmap.Width; 
image.Height = bitmap.Height; 

Border border = new Border(); 
border.Background = Brushes.Blue; 
border.BorderBrush = Brushes.Red; 
border.BorderThickness = new Thickness(10); 
border.Margin = new Thickness(10); 
border.Padding = new Thickness(10); 

border.Child = image; 

InlineUIContainer box = new InlineUIContainer(border, rt.CaretPosition); 
+0

prüfen http://stackoverflow.com/questions/14895745/saving -richttextbox-flowdocument-to-image – Techidiot

+0

Danke Techidiot, aber das ist es überhaupt nicht. Ich möchte nur das Dokument mit den Bildern "drinnen" speichern - das Dokument nicht als Bild exportieren. – T4NK3R

+0

Warum muss jedes kleine Ding ein Albtraum von Hacks und Workarounds in WPF sein?!? Ich versuche jetzt zu schummeln, indem ich intern die Zwischenablage benutze, aber das ist auch wahnsinnig schwer und erlaubt keine Transparenz (PNG und GIF), so dass ich fast komplett auf WPF verzichten würde ... – T4NK3R

Antwort

0

versuchen, das Bild in einem Viewbox anstelle eines Border wie so Einkapseln:

diese
string fileName = openFileDialog.FileName; 
BitmapImage bitmap = new BitmapImage(new Uri(fileName, UriKind.Absolute)); 

BlockUIContainer blockUI = new BlockUIContainer(); 
Image img = new Image(); 
img.Source = bitmap; 
Viewbox vb = new Viewbox(); 
vb.StretchDirection = StretchDirection.DownOnly; 
vb.Stretch = Stretch.Uniform; 
vb.HorizontalAlignment = HorizontalAlignment.Center; 
vb.VerticalAlignment = VerticalAlignment.Center; 
vb.Child = img; 
blockUI.Child = vb; 

rt.Document.Blocks.Add(blockUI); 
Verwandte Themen