代码之家  ›  专栏  ›  技术社区  ›  Jay Wick

wpf:允许用户在richtextbox中调整图像大小

  •  3
  • Jay Wick  · 技术社区  · 16 年前

    WPF中的richtextbox控件中是否有允许用户调整插入图像大小的方法,或者您是否必须为此设计自己的方法。

    下面是我想要实现的,一个wordpad做我想做的屏幕截图:

    注:

    • 以纯文本形式读取RTF文件时,我发现与图像大小相关的控制标记是 \Picscalex100 \Picscaley100 (其中100表示缩放到100%)。

    是的,有没有合适的方法或技巧?关于如何进行编程有什么建议吗?或者我完全看错了控制?

    下面是我想要实现的,一个写字板做我想做的事情的截图:

    enter image description here

    笔记:

    • 以纯文本形式读取RTF文件时,我发现与图像大小相关的控件标记为 \picscalex100 \picscaley100 (其中100表示缩放到100%)。

    是的,有没有合适的方法或技巧?关于如何进行编程有什么建议吗?或者我完全看错了控制?

    2 回复  |  直到 8 年前
        1
  •  5
  •   Jay Wick    16 年前

    结果你需要把你的图像包装在 ResizingAdorner .

    此代码的漂亮和简单的实现可以在 http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx 作者周马可(第二篇)。

    这个代码 居家装饰者 可从以下网站获取msdn示例: http://msdn.microsoft.com/en-us/library/ms771714%28loband%29.aspx

    这是一个相当于我现在使用的代码的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
    

    这个 居家装饰者 样本将需要一些伟大的黑客来满足我的需要,但多好的开始。

    希望其他人能发现这一点!

        2
  •  -1
  •   Randy    8 年前

    可以复制图像进行绘制并相应调整大小,然后将其发布到vb6中的richtextbox。直接发布到vb6的图像容易失真。任何从paint复制到vb6的图像都会像在paint中一样粘贴。我在从PDF图像复制到richtextbox时发现了这一点。

    推荐文章