05 2012 档案

摘要:前几天写程序需要将DIB(设备无关位图)格式的图片在WPF 程序中显示出来,在网上查了一些资料和代码,记录下来以便以后参考。设备有关位图主要是显卡在显存中保存的图片格式,显卡就是从显存里面将要显示的图片数据直接打印到显示器上,这样不仅节省了系统内存的空间,还大大节省了从内存把图片数据搬到显存的时间—因为显卡芯片可以实现一些指令,直接操作显存中的图片。所以设备有关位图的格式不是固定的,是由显卡制造商自由决定的,这也就意味着我们没有办法直接操作DDB格式图片的每一个像素。如果保存在硬盘的图片格式是以DDB格式保存的话,那就意味着你使用一个显卡保存的图片不能在使用不同型号的显卡的机器上打开—因为不同 阅读全文
posted @ 2012-05-30 17:56 chun0318 阅读(290) 评论(0) 推荐(0)
摘要:截图前,先拷贝整个屏幕图像到一个Image中,我们称之为ScreenSnapshot, 然后用户通过鼠标操作,确定一个矩形区域Rect,将Rect传递给函数BitmapSource Clip(Rect r) , Clip函数在ScreenSnapshot上截取Rect对于的那一部分图像,并返回。如何截取屏幕图像WPF没有内置的函数,但可以借用WinForm的Graphics来完成,其将图像截取并保存在一个System.Drawing.Bitmap上,然后我们使用一个辅助函数将System.Drawing.Bitmap转化为WPF版本的System.Media.Imaging.BitmapSou 阅读全文
posted @ 2012-05-30 17:41 chun0318 阅读(1222) 评论(0) 推荐(0)
摘要:MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes((string)rtf)); mRichTextBox.Selection.Load(stream, DataFormats.Rtf); 阅读全文
posted @ 2012-05-30 17:24 chun0318 阅读(441) 评论(0) 推荐(0)
摘要:把布局容器添加到ScrollViewer中,可以实现布局容器滚动的效果:代码如下:Canvas tCanvas = new Canvas; m_ScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;m_ScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;m_ScrollViewer.Width = 150;m_ScrollViewer.Height = tHeight;m_ScrollViewer.... 阅读全文
posted @ 2012-05-15 18:40 chun0318 阅读(1729) 评论(0) 推荐(0)
摘要:在msdn上面介绍两种方法:1、使用RenderTargetBitmap2、使用VisualBrush使用第一种方式是,首先按UIElement的原始尺寸转换成位图,放到Image控件里面,通过缩放矩阵编写你想要的缩略图,代码: 1 RenderTargetBitmap tRenderTargetBitmap = new RenderTargetBitmap((int)tPageNode.Width, (int)tPageNode.Height, 1 / 96, 1 / 96, PixelFormats.Default); 2 tRenderTa... 阅读全文
posted @ 2012-05-15 16:18 chun0318 阅读(2081) 评论(0) 推荐(0)
摘要:<Window.Resources> <Style x:Key="ButtonStyle"> <Setter Property="Button.Width" Value="35"/> <Setter Property="Button.Height" Value="35"/> <Setter Property="Button.Margin" Value="3,0,0,0"/> </Style& 阅读全文
posted @ 2012-05-15 09:27 chun0318 阅读(1993) 评论(0) 推荐(0)
摘要:序列化: string strDocument = System.Windows.Markup.XamlWriter.Save(m_RichTextBox.Document);保存成字符串的形式反序列化:System.IO.StringReader tStringReader = new System.IO.StringReader((string)e.Value); //其中e.Value是序列化中的stringSystem.Xml.XmlReader tXmlReader = System.Xml.XmlReader.Create(tStringReader);FlowDocume... 阅读全文
posted @ 2012-05-09 09:44 chun0318 阅读(479) 评论(0) 推荐(1)