2010-01-10 41 views
2

WPF中的RichTextBox控件中是否存在允許用戶調整插入圖像大小的方法,或者您是否必須爲此設計自己的方法?WPF:允許用戶調整RichTextBox中的圖像

我想要實現的是如下圖所示,寫字板截圖做什麼,我想:

enter image description here

注:

  • 閱讀RTF文件爲純文本我發現與圖像大小有關的控制標記是\picscalex100\picscaley100(其中100表示​​縮放到100%)。

所以是的,有沒有一個適當的方法或技巧呢?有關如何進行編程的任何建議?或者我完全看錯了控制權?

回答

4

原來你需要用ResizingAdorner包裹你的圖片。

Marco Zhou(第二篇文章)可以在http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx找到這個代碼的一個漂亮和簡單的實現。

ResizingAdorner的代碼可以作爲http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx

這裏的MSDN樣本是一個VB.net等效代碼我現在用

Dim img As Image 
Sub AddImg() Handles btnAddImage.Click 
    Dim dlg As New Microsoft.Win32.OpenFileDialog 
    dlg.Filter = "Image Files(*.*) | *.*" 
    If dlg.ShowDialog Then 
     img = New Image 
     AddHandler img.Loaded, AddressOf imgloaded 
     img.Source = New BitmapImage(New Uri(dlg.FileName, UriKind.Absolute)) With {.CacheOption = BitmapCacheOption.OnLoad} 
     Dim container As New BlockUIContainer(img) 
     rtb.Document.Blocks.Add(container) 
    End If 
End Sub 

Private Sub imgloaded(ByVal sender As Object, ByVal e As Windows.RoutedEventArgs) 
    Dim al As AdornerLayer = AdornerLayer.GetAdornerLayer(img) 
    If Not (al Is Nothing) Then 
     al.Add(New SDKSample.ResizingAdorner(img)) 
    End If 
End Sub 

ResizingAdorner樣本將需要一些偉大的黑客來滿足我的需求,但是一個偉大的開始。

希望別人認爲這有用!

+0

定義了SDKSample.ResizingAdorner()在哪裏?您提供的任何鏈接都沒有任何示例,因此您的回答沒有任何用處。 – Ortund 2017-07-13 08:53:52

+0

對不起,如果它沒有幫助,但您是否嘗試安裝Windows SDK(請參閱[構建示例](https://msdn.microsoft.com/en-us/library/ms771714(loband).aspx#Anchor_1))。我真的不知道哪個版本,因爲這是大約7年前:( – Jay 2017-07-13 12:51:57

+0

這就是爲什麼我評論。如果你的答案已經更完整,用戶現在來這個答案現在將更少地困惑在這裏做什麼。 – Ortund 2017-07-13 13:14:16