←选择平台

ImageViewerVirtualizer类

总结

控件中加载大量项的支持imageview

语法
c#
VB
c++
公共摘要ImageViewerVirtualizer
公共mustlinheritImageViewerVirtualizer
公共ref类ImageViewerVirtualizer摘要
讲话

ImageViewerVirtualizer为处理大量图像数据提供支持imageview通过按需加载和卸载项数据,完全控制呈现占位符,并控制要缓存到内存中的项的数量。

有关详细信息,请参见图像查看器Virtualizer

例子
c#
VB
使用Leadtools;使用Leadtools.Controls;使用Leadtools.Codecs;使用Leadtools.Drawing;公共无效ImageViewerVirtualizer_Example ()字符串imageFileName = GetExampleImageFile();//创建一个新表单来测试virtualizerMyForm form =MyForm (imageFileName);form.ShowDialog ();私人静态字符串GetExampleImageFile ()字符串imageFileName = Path.Combine(LEAD_VARS.ImagesDir,“ImageViewerVirtualizerExample.tif”);//检查之前是否创建,返回如果(File.Exists (imageFileName))返回imageFileName;//创建一个包含许多页面的图像,我们将使用它进行测试常量intpageccount = 100;常量intimageWidth = 800;常量intimageHeight = 800;varrc =矩形(0,0,imageWidth, imageHeight);使用(RasterCodecs codecs =RasterCodecs ())使用(字体=字体(FontFamily。GenericMonospace, 80))intPage = 1;page <= pageCount;+ +页)使用(RasterImage image = RasterImage。创建(imageWidth, imageHeight, 24,96, RasterColor.FromKnownColor(RasterKnownColor.White)))IntPtr hdc = RasterImagePainter.CreateLeadDC(image);使用(图形= Graphics. frommhdc (hdc))graphics.DrawRectangle(笔。蓝色,0,0 rc。宽度- 1 rc。高度- 1);TextRenderer。DrawText(图形,“页面”+ page.ToString(),字体,rc,颜色。红色,TextFormatFlags。HorizontalCenter|TextFormatFlags.VerticalCenter);RasterImagePainter.DeleteLeadDC (hdc);编解码器。保存(图像,imageFileName, RasterImageFormat。TifLzw, 0, 1, -1, -1, page == 1 ?CodecsSavePageMode。覆盖:CodecsSavePageMode.Append);返回imageFileName;//自定义Virtualizer公共MyVirtualizer: ImageViewerVirtualizer私人字符串_imageFileName;公共MyVirtualizer (字符串imageFileName):基地()_imageFileName = imageFileName;//我们一次加载4个项目.MaximumItems = 4;受保护的覆盖对象LoadItem (ImageViewerItem项)//加载一个页面,页码是项目索引+ 1,但它例如,//可以是应用程序中的任何内容//使用ImageViewerItem。标记,以存储标识此项目所需的数据intpageNumber =.ImageViewer.Items.IndexOf(item) + 1;使用(RasterCodecs codecs =RasterCodecs ())返回编解码器。负载(_imageFileName pageNumber);受保护的覆盖无效SaveItem (ImageViewerItem项,对象数据)//在这个应用程序中什么都不做,只是记录它。//如果需要保存,则在此处执行intpageNumber =.ImageViewer.Items.IndexOf(item) + 1;System.Diagnostics.Debug.WriteLine ("页面{0}的SaveItem被称为");受保护的覆盖无效DeleteItem (ImageViewerItem项,对象数据)//处理图像RasterImage image = data作为RasterImage;如果(图片! =image.Dispose ();受保护的覆盖无效RenderItemPlaceholder (ImageViewerRenderEventArgs e)//显示该页的占位符intpageNumber =.ImageViewer.Items.IndexOf(e.Item) + 1;LeadMatrix变换=.ImageViewer.GetItemImageTransform (e.Item);图形= e.PaintEventArgs.Graphics;//在这个项目转换中呈现在0,0处的消息LeadPointD pt = LeadPointD。创建(0,0);pt = transform.Transform(pt);字符串消息=字符串.Format (“正在加载页面{0}…”, pageNumber);图形。拉带(消息,.ImageViewer。字体、画笔。黑色(浮动pt。X (浮动) pt.Y);//测试虚拟程序MyForm:表单公共MyForm (字符串imageFileName)_imageFileName = imageFileName;私人imageview _imageViewer;私人字符串_imageFileName;受保护的覆盖无效OnLoad (EventArgs e)//创建一个垂直布局的新图像查看器_imageViewer =imageview (ImageViewerVerticalViewLayout {Columns = 1});_imageViewer。BackColor = Color.Bisque;_imageViewer。做ck = DockStyle.Fill;//增加缩放交互模式_imageViewer.InteractiveModes.Add (ImageViewerPanZoomInteractiveMode ());.Controls.Add (_imageViewer);_imageViewer.BringToFront ();//添加空项,每个空项的大小都是正确的使用(RasterCodecs codecs =RasterCodecs ())intpageCount;LeadSize页大小;LeadSizeD pageResolution;使用(CodecsImageInfo信息=编解码器。GetInformation (_imageFileName真正的))pageCount = info.TotalPages;pageSize =铅大小。宽度,info.Height);pagerresolution = leadsize . create(信息。XResolution info.YResolution);_imageViewer.BeginUpdate ();intPage = 1;page <= pageCount;+ +页)//没有图像数据,虚拟器将负责加载页面并渲染它们ImageViewerItem item =ImageViewerItem ();项。ImageSize = pageSize;项。分辨率= pagerresolution;_imageViewer.Items.Add(项);_imageViewer.EndUpdate ();//最后,设置我们的虚拟器,使它可以开始工作_imageViewer。仿真器=MyVirtualizer (_imageFileName);//运行demo,使用平移(拖动)和缩放(CTRL-CLICK和拖动)来显示项目//当它们在视图中时,注意它们是如何加载的//改变MaximumItems的数量以查看其效果。基地.OnLoad (e);静态LEAD_VARS公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”
进口Leadtools进口Leadtools。控制进口Leadtools。编解码器进口Leadtools。画进口LeadtoolsControlsExamples.LeadtoolsExamples.Common公共ImageViewerVirtualizer_Example ()昏暗的imageFileName作为字符串= GetExampleImageFile ()创建一个新表单来测试virtualizer昏暗的形式作为MyForm =MyForm (imageFileName)form.ShowDialog ()结束私人共享函数GetExampleImageFile ()作为字符串昏暗的imageFileName作为字符串= Path.Combine (ImagesPath.Path“ImageViewerVirtualizerExample.tif”’检查它是否以前创建过,并返回它如果File.Exists (imageFileName)然后返回imageFileName结束如果“创建一个包含许多页面的图像,我们将使用它进行测试常量pageCount作为整数= 100常量imageWidth作为整数= 800常量imageHeight作为整数= 800昏暗的钢筋混凝土作为矩形(0,0,imageWidth, imageHeight)使用编解码器作为RasterCodecs =RasterCodecs ()使用字体作为字体=字体(FontFamily。GenericMonospace, 80)页面作为整数= 1pageCount使用图像作为RasterImage = RasterImage。创建(imageWidth, imageHeight, 24,96, RasterColor.FromKnownColor(RasterKnownColor.White))昏暗的hdc作为IntPtr = RasterImagePainter.CreateLeadDC(image)使用图形作为图形= Graphics . frommhdc (hdc)graphics.DrawRectangle(笔。蓝色,0,0 rc。宽度- 1 rc。高度- 1)TextRenderer。DrawText(图形,“页面”& page.ToString(),字体,rc,颜色。红色,TextFormatFlags。HorizontalCenterTextFormatFlags.VerticalCenter)结束使用RasterImagePainter.DeleteLeadDC (hdc)如果Page = 1然后编解码器。保存(图像,imageFileName, RasterImageFormat。TifLzw, 0, 1, -1, -1, codecssavepagmode . overwrite)其他的编解码器。保存(图像,imageFileName, RasterImageFormat。TifLzw, 0, 1, -1, -1, codecssavepagemode . appde)结束如果结束使用下一个页面结束使用结束使用返回imageFileName结束函数自定义Virtualizer公共MyVirtualizer:继承了ImageViewerVirtualizer私人_imageFileName作为字符串公共按值传递imageFileName作为字符串MyBase()_imageFileName = imageFileName“我们一次将装载4件物品.MaximumItems = 4结束受保护的覆盖函数LoadItem (按值传递作为ImageViewerItem)作为对象加载一个页面,页码是项目索引+ 1,但它'可以是应用程序中的任何内容'使用ImageViewerItem。标记,以存储标识此项目所需的数据昏暗的pageNumber作为整数.ImageViewer.Items.IndexOf(item) + 1使用编解码器作为RasterCodecs =RasterCodecs ()返回编解码器。负载(_imageFileName pageNumber)结束使用结束函数受保护的覆盖SaveItem (按值传递作为ImageViewerItem,按值传递数据作为对象“在这个应用程序中什么都不用做,只是记录它。如果需要保存,那么就在这里执行昏暗的pageNumber作为整数.ImageViewer.Items.IndexOf(item) + 1System.Diagnostics.Debug.WriteLine ("页面{0}的SaveItem被称为"结束受保护的覆盖DeleteItem (按值传递作为ImageViewerItem,按值传递数据作为对象'处理图像昏暗的图像作为RasterImage = TryCast(数据,RasterImage)如果图像没有什么然后image.Dispose ()结束如果结束受保护的覆盖RenderItemPlaceholder (按值传递e作为ImageViewerRenderEventArgs)'渲染此页的占位符昏暗的pageNumber作为整数.ImageViewer.Items.IndexOf(e.Item) + 1昏暗的变换作为LeadMatrix =.ImageViewer.GetItemImageTransform (e.Item)昏暗的图形作为Graphics = e.PaintEventArgs.Graphics'在此项目转换中呈现0,0处的消息昏暗的pt作为LeadPointD = LeadPointD。创建(0,0)pt = transform.Transform(pt)昏暗的消息作为字符串字符串.Format (“正在加载页面{0}…”pageNumber)图形。拉带(消息,.ImageViewer。字体、画笔。黑色的,CSng(pt.X),CSng(pt.Y))结束结束'表单来测试虚拟器私人MyForm:继承了形式公共按值传递imageFileName作为字符串_imageFileName = imageFileName结束私人_imageViewer作为imageview私人_imageFileName作为字符串受保护的覆盖OnLoad (按值传递e作为EventArgs)创建一个垂直布局的新图像查看器昏暗的viewLayout作为ImageViewerVerticalViewLayoutviewLayout。列= 1昏暗的_imageViewer作为imageview (viewLayout)_imageViewer。BackColor =颜色。浓汤_imageViewer。做ck = DockStyle.Fill“增加缩放互动模式_imageViewer.InteractiveModes.Add (ImageViewerPanZoomInteractiveMode ()).Controls.Add (_imageViewer)_imageViewer.BringToFront ()“添加空物品,每件物品的大小都是正确的使用编解码器作为RasterCodecs =RasterCodecs ()昏暗的pageCount作为整数昏暗的页大小作为LeadSize昏暗的pageResolution作为LeadSizeD使用信息作为CodecsImageInfo =编解码器。GetInformation (_imageFileName真正的pageCount = info。TotalPagespageSize =铅大小。宽度,info.Height)pagerresolution = leadsize . create(信息。XResolution info.YResolution)结束使用_imageViewer.BeginUpdate ()昏暗的页面作为整数= 1page <= pageCount'没有图像数据,虚拟器将负责加载页面和渲染它们昏暗的作为ImageViewerItem =ImageViewerItem ()项。ImageSize = pageSize项。分辨率= pagerresolution_imageViewer.Items.Add(项)Page += 1循环_imageViewer.EndUpdate ()结束使用最后,设置我们的虚拟器,让它可以开始工作_imageViewer。仿真器=MyVirtualizer (_imageFileName)’运行演示,使用平移(拖动)和缩放(CTRL-CLICK并拖动)来显示项目注意它们在视野中是如何加载的改变MaximumItems的数量,看看效果如何。MyBase.OnLoad (e)结束结束
需求
目标平台
Leadtools。控制作为sembly
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。