2010-01-10 2 views
2

사용자가 삽입 된 이미지의 크기를 조정할 수 있도록 WPF의 RichTextBox 컨트롤에 메서드가 있습니까? 아니면이 메서드를 직접 고안해야합니까? 아래 그림 내가 달성하기 위해 노력하고있어WPF : RichTextBox에서 이미지 크기 조정 허용

, 워드 패드의 스크린 샷하고 내가 원하는 :

enter image description here

주 :

  • 일반 텍스트 I로 RTF 파일 읽기 이미지 크기와 관련된 컨트롤 태그가 \picscalex100\picscaley100 (100은 100 %로 표시됨)이라는 것을 알 수 있습니다.

그래, 적절한 방법이나 트릭이 있습니까? 그것을 프로그래밍하는 방법에 대한 조언? 아니면 잘못된 컨트롤을 모두보고 있습니까?

답변

4

ResizingAdorner에 이미지를 래핑해야합니다.

이 코드의 아름답고 간단한 구현은 http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx Marco Zhou (두 번째 게시물)에서 찾을 수 있습니다.

ResizingAdorner의 코드는 여기에 http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx

에서 MSDN 샘플로 제공 것은 내가 지금 멋진 해킹이 필요합니다

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 샘플 코드의 VB.net 동등한 사용하고 있어요 내 필요를 충족시키지 만, 대단한 시작입니다.

다른 사람이 유용하다고 생각하겠습니다.

+0

'SDKSample.ResizingAdorner()'는 어디에 정의되어 있습니까? 귀하가 제공 한 링크 중 어떤 것도 예를 하나도 가지고 있지 않으므로 귀하의 대답은 전혀 유용하지 않습니다. – Ortund

+0

죄송합니다. 도움이되지 않지만 Windows SDK를 설치해 보셨습니까 ([샘플 작성] (https://msdn.microsoft.com/en-us/library/ms771714 (loband) .aspx # Anchor_1) 참조). 솔직히 말해서이 버전이 약 7 년 전의 어떤 버전인지 전혀 알지 못합니다. ( – Jay

+0

그 이유는 정확히 내가 왜 주석을 달았습니다. 귀하의 대답이 더 완전 해지면 지금이 응답을받는 사용자는 여기에서해야 할 일에 대해 훨씬 덜 혼란 스러울 것입니다. – Ortund