c#
VB
c++
控件中加载大量项的支持imageview.
公共摘要类ImageViewerVirtualizer
公共mustlinherit类ImageViewerVirtualizer
公共ref类ImageViewerVirtualizer摘要
的ImageViewerVirtualizer为处理大量图像数据提供支持imageview通过按需加载和卸载项数据,完全控制呈现占位符,并控制要缓存到内存中的项的数量。
有关详细信息,请参见图像查看器Virtualizer.
使用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)为页面作为整数= 1来pageCount使用图像作为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。HorizontalCenter或TextFormatFlags.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 ()昏暗的页面作为整数= 1做而page <= pageCount'没有图像数据,虚拟器将负责加载页面和渲染它们昏暗的项作为ImageViewerItem =新ImageViewerItem ()项。ImageSize = pageSize项。分辨率= pagerresolution_imageViewer.Items.Add(项)Page += 1循环_imageViewer.EndUpdate ()结束使用最后,设置我们的虚拟器,让它可以开始工作_imageViewer。仿真器=新MyVirtualizer (_imageFileName)’运行演示,使用平移(拖动)和缩放(CTRL-CLICK并拖动)来显示项目注意它们在视野中是如何加载的改变MaximumItems的数量,看看效果如何。MyBase.OnLoad (e)结束子结束类
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。
