`
wangleifire
  • 浏览: 509411 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

WPF实现RichTextBox插入图片及调整行距

    博客分类:
  • c#
阅读更多

WPF里面虽然很多形式上跟Winform一样,但是控件的使用上面还是会有很多诧异。RichTextBox就是一个例子,是的,在WPF里面对这个控件可以做很多Winform很难做的效果出来。

比如在对RichTextBox插入图片,winform时代除了用复制粘贴这种借助剪贴板的差劲方法之外就是要重写和自定义RichTextBox控件了。这就需要高超的编程能力了。但在WPF里面,只需要加几个代码就能搞定了。

在XAML里面添加图片到RichTextBox可以如下所示:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> ​ ​ ​ ​ ​ ​ ​ < R​i​c​h​T​e​x​t​B​o​x​ H​o​r​i​z​o​n​t​a​l​A​l​i​g​n​m​e​n​t =​"​L​e​f​t​" ​M​a​r​g​i​n =​"​9​0​,​1​2​,​0​,​0​" ​N​a​m​e =​"​r​i​c​h​T​e​x​t​B​o​x​1​" > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < R​i​c​h​T​e​x​t​B​o​x​.​D​o​c​u​m​e​n​t > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < F​l​o​w​D​o​c​u​m​e​n​t​ F​o​c​u​s​a​b​l​e =​"​T​r​u​e​" ​L​i​n​e​H​e​i​g​h​t =​"​5​" > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < P​a​r​a​g​r​a​p​h​ x​:​N​a​m​e =​"​g​a​r​a​" > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​文​字​区​域​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < I​m​a​g​e​ S​o​u​r​c​e =​"​D​:​\​1​3​4​2​8​9​2​_​1​0​.​j​p​g​" ​F​o​c​u​s​a​b​l​e =​"​T​r​u​e​" ​H​e​i​g​h​t =​"​5​0​" ​S​t​r​e​t​c​h =​"​U​n​i​f​o​r​m​" /​> ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​文​字​区​域​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < R​u​n​ T​e​x​t =​"​文​字​区​域​文​字​区​域​" >​<​/ R​u​n > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < R​u​n​ T​e​x​t =​"​文​字​区​域​" >​<​/ R​u​n > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ <​/ P​a​r​a​g​r​a​p​h > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < P​a​r​a​g​r​a​p​h​ x​:​N​a​m​e =​"​g​a​r​a​1​" > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < R​u​n​ T​e​x​t =​"​文​字​区​域​" >​<​/ R​u​n > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ < R​u​n​ T​e​x​t =​"​文​字​区​域​" >​<​/ R​u​n > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ <​/ P​a​r​a​g​r​a​p​h > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ <​/ F​l​o​w​D​o​c​u​m​e​n​t > ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ <​/ R​i​c​h​T​e​x​t​B​o​x​.​D​o​c​u​m​e​n​t > ​ ​ ​ ​ ​ ​ ​ <​/ R​i​c​h​T​e​x​t​B​o​x >

这样就往控件里面添加了图片了。

备注:FlowDocument里面的LineHeight 属性是文字段落的间距。默认间距很大,所以这里调整一下!

当然,这样未必能够完全满足要求,因为有时候我们需要在程序运行的时候点击按钮选取图片进行添加。代码如下:

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->p​r​i​v​a​t​e v​o​i​d ​A​d​d​J​P​G​_​C​l​i​c​k​( o​b​j​e​c​t ​s​e​n​d​e​r​,​ ​R​o​u​t​e​d​E​v​e​n​t​A​r​g​s​ ​e​)​ ​ ​ ​ ​ ​ ​ ​ ​{​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ s​t​r​i​n​g ​f​i​l​e​p​a​t​h​ = "​" ;​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ s​t​r​i​n​g ​f​i​l​e​n​a​m​e​ = "​" ;​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​O​p​e​n​F​i​l​e​D​i​a​l​o​g​ ​o​p​e​n​f​i​l​e​j​p​g​ = n​e​w ​O​p​e​n​F​i​l​e​D​i​a​l​o​g​(​)​;​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​o​p​e​n​f​i​l​e​j​p​g​.​F​i​l​t​e​r​ = " j​p​g​图​片​(​*​.​j​p​g​)​|​*​.​j​p​g​|​g​i​f​图​片​(​*​.​g​i​f​)​|​*​.​g​i​f " ;​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​o​p​e​n​f​i​l​e​j​p​g​.​F​i​l​t​e​r​I​n​d​e​x​ = 0 ; openfilejpg.RestoreDirectory = true ; openfilejpg.Multiselect = false ; if (openfilejpg.ShowDialog() == true ) { filepath = openfilejpg.FileName; Image img = new Image(); BitmapImage bImg = new BitmapImage(); img.IsEnabled = true ; bImg.BeginInit(); bImg.UriSource = new Uri(filepath, UriKind.Relative); bImg.EndInit(); img.Source = bImg; // MessageBox.Show(bImg.Width.ToString() + "," + bImg.Height.ToString()); /* 调整图片大小 if (bImg.Height > 100 || bImg.Width > 100) { img.Height = bImg.Height * 0.2; img.Width = bImg.Width * 0.2; } */ img.Stretch = Stretch.Uniform; // 图片缩放模式 new InlineUIContainer(img, richTextBox1.Selection.Start); // 插入图片到选定位置 } }
分享到:
评论
1 楼 raze 2010-04-22  
你好,最近在研究CC与CPPUNIT集成的事情,基本上已经解决了编译和构建的问题,现在就只剩下两个问题了:
  (1)故意在测试的VC工程里面做了一个小错误,导致编译失败,但是编译失败的时候,CC仍然提示:
    [exec] Result: 1
2010-04-09 22:26:46,614 [Thread-30] INFO  ScriptRunner     -
2010-04-09 22:26:46,614 [Thread-30] INFO  ScriptRunner     - BUILD SUCCESSFUL
    这也导致编译后在dashboard中显示每次编译都是绿色成功的。

   (2)执行单元测试程序后,输出的内容无法显示到dashboard中,不知道你是怎么解决的?
   看你的文章好像说的不是很清楚。无论是把CPPUNIT按照编译输出还是XML输出都无法显示。
   我的邮箱: yan.jun2@zte.com.cn  非常感谢!

相关推荐

    WPF+RichTextBox实现富文本编辑器

    WPF+RichTextBox实现富文本编辑器,主要实现主要实现复制,剪切,粘贴,撤销,重做,保存,打开,文本加粗,斜体,下划线,删除线,左对齐,居中对齐,右对齐,两端对齐,缩进,减少缩进,项目符号,数字符号,上标...

    基于WPF的richtextbox控件,按格式导入导出word文档内容

    在Windows Presentation Foundation(WPF)框架中,richtextbox控件是一个非常重要的组件,它用于显示和编辑富文本内容,支持各种格式的文本、图片、表格等元素。本主题将深入探讨如何使用WPF的richtextbox控件来...

    wpf支持上下标的richtextbox

    描述中提到的“wpf原生richtextbox支持文字上标下标”,可能是指开发者通过某种方式实现了这一特性,例如使用`FlowDocument`和`Run`元素,或者使用`XAML`标记来实现。 在WPF中,我们通常会用`FlowDocument`作为`...

    WPF中RichTextBox对文件拖拽的支持(已解决)

    总的来说,实现`RichTextBox`对文件拖放的支持涉及到WPF的拖放机制、文件操作以及`RichTextBox`的文档处理。通过这些技术,我们可以创建出更符合用户习惯的交互式应用程序。在实际项目中,你可能还需要根据具体需求...

    WPF中richtextbox知识点总结

    WPF中richtextbox知识点总结richtextbox知识点总结richtextbox知识点总结richtextbox知识点总结richtextbox知识点总结

    WPF自制RichTextBox文本编辑器

    RichTextBox是WPF提供的一种控件,它允许用户进行富文本编辑,包括字体设置、段落格式化以及插入图片等。 首先,让我们了解WPF。它是.NET Framework的一部分,用于构建桌面应用程序的UI框架。它提供了丰富的图形...

    WPF RichTextBox 简单示例

    在Windows Presentation Foundation (WPF) 中,`RichTextBox` 是一个强大的文本编辑控件,用于显示和编辑富文本内容,支持格式化文本、图像、表格等复杂布局。本示例项目"RichTextBox 简单示例"展示了如何在WPF应用...

    WPF RichTextBox显示HTML格式数据

    RichTextBox控件中显示HTML格式数据

    wpf读取richTextBoxwpf读取richTextBox

    根据提供的信息,我们可以总结出以下关于WPF中`RichTextBox`控件的使用与操作的知识点: ### WPF中的RichTextBox概述 `RichTextBox`是Windows Presentation Foundation (WPF)框架中的一个强大文本编辑控件,它允许...

    wpf操作richTextBox

    ### WPF操作RichTextBox知识点详解 #### 一、概述 在WPF(Windows Presentation Foundation)框架中,`RichTextBox`是一种非常强大的控件,用于显示和编辑格式化的文本。它支持复杂的文本布局、样式和流文档,使得...

    wpf log4net richtextbox

    通过以上步骤,我们就实现了一个简单的WPF日志系统,既能将日志写入本地文件,又能在界面上以彩色的方式实时显示。这种结合方式不仅增强了调试体验,还使用户能够更直观地理解程序的运行状态。在实际项目中,还可以...

    WPF richtextBox高亮显示指定文本.rar

    在Windows Presentation Foundation (WPF) 中,`richtextBox` 是一个非常强大的控件,用于显示和编辑富文本内容,支持格式化文本、图片、表格等复杂布局。本示例中的"richtextBox高亮显示指定文本.rar" 文件提供了一...

    C# wpf RichTextBox和行号有关的技术难点

    在C# WPF(Windows Presentation Foundation)开发中,RichTextBox是一个常用的控件,它用于显示和编辑富文本内容,支持多种格式,如字体、颜色、段落等。然而,在实际应用中,有时我们需要为RichTextBox添加行号...

    wpf RichTextBox文本编辑器

    在Windows Presentation Foundation (WPF) 中,`RichTextBox` 是一个强大的控件,用于创建具有丰富格式化的文本编辑器。这个控件允许用户输入、编辑和格式化文本,包括字体、颜色、段落样式以及插入图像等。在本文中...

    wpf在RichTextBox中添加控件未启用

    通过以上步骤,可以在WPF应用程序中的`RichTextBox`内成功添加并启用控件,从而实现更复杂的用户界面设计与互动体验。这不仅增强了`RichTextBox`的功能灵活性,还提供了更广阔的设计空间,以满足不同的应用场景需求...

    NET,C#在RichTextBox控件加入图片(类似QQ)教程

    本教程将教你如何通过一些技巧在`RichTextBox`中实现类似QQ聊天窗口那样的图片插入功能。 1. **基础准备**: - 首先,确保你有Visual Studio IDE,并创建一个新的Windows Forms项目。 - 在设计视图中添加一个`...

    C# RichTextbox设置行间距

    在`RichTextBox`中,我们不能直接设置行间距,但可以通过调整字体大小或者插入空格来模拟增加行间距的效果。 2. **模拟行间距**: 一种方法是通过自定义一个函数,计算出所需的行间距,并在每行文字后面添加相应...

    WPF 鼠标拖动图片放大缩小

    在WPF(Windows Presentation Foundation)开发中,实现鼠标拖动图片并进行放大缩小的效果是一项常见的交互功能。这个功能可以提供用户更加直观的操作体验,尤其是在查看或编辑图像的应用中。以下将详细阐述如何实现...

    richtextbox设置行间距

    不过,我们可以通过间接的方式实现这一功能,即通过修改字体的行距属性。`System.Drawing.Font`类有一个名为`Height`的属性,它代表了字体的大小,同时也影响了文本的行间距。默认情况下,`Height`是根据字体的点数...

    WPF版HTML编辑器基于RichTextBox

    网上找到的WPF版HTML编辑器都是基于web browser控件,它在WPF中存在AllowsTransparency问题。今天终于解决了,分享给大家。 只收1分,大家可以接收吧! 源码来自于codeproject,原版不支持中文汉字,中文会变成乱码还...

Global site tag (gtag.js) - Google Analytics