TLDR:
在项目中组织图像的最佳模型是什么?是否常见并建议在启动时创建ImageList
并通过其索引访问每个图像或者重新分配方式?无论如何,请解释原因。
详细问题:
我目前正在开发一款已经开发了很长一段时间的软件。它部分是用Visual Basic编写的,它在很大程度上依赖于ImageList
类来组织软件各个部分的所有图像。在应用程序开始时,ImageList
通过一个巨大的数组创建,该数组包含所有可访问的图像文件的所有名称。每当您需要图像时,您都需要访问此对象并通过列表中图像的索引获取图像。
据我所知,这在过去可能部分有用,因为visual studio中的资源使用起来并不方便,而且某些控件仅适用于这些列表,例如ToolBar
(由{替换{3}})具有Poperty ImageList
的类,每个按钮只在ImageList
中获取其图像的索引。
我觉得应该放弃这个庞大的ImageList
,并且应该在资源中组织这些图像的过程缓慢,但我不是主要的.net开发人员,并且不太了解winforms和最好的做法。
在TLDR中提到的问题:在项目中组织图像的最佳模型是什么?是否常见并建议在启动时创建ImageList
并通过其索引访问每个图像或者重新分配方式?无论如何,请解释原因。
答案 0 :(得分:0)
如果是wpf项目
我有两个想法
1)在窗口的xaml和xaml代码中添加一个stackpanel
例如
StackPanel ImagesStackPanel = new StackPanel();
foreach(Image img in Images) //your images enumerable
{
//here you can add also other elements
Image _img = (Image)XamlReader.Parse(@"<Image Name="{{here goes the image id}}" Height="400" Width="400" /> ");
ImagesStackPanel.Children.Add(_img );
}
_Window.Content = ImagesStackPanel;
2) 如果你不担心cpu / ram的使用情况 你关心造型等很多,你可以做以下事情
另一个想法是使用webbrowser或cefsharp浏览器。 使用媒体库的html代码创建一个html文件,将您的文件设置为资源,然后从html代码中调用他们的资源URL。
您可以在stringbuilder中加载html代码,并通过替换您可以设置为{{my value}}的特定值来进行c#中所需的任何更改
//the html code --> id='{{my id}}' src='{{img url }}'
//the c# code --> _yourStringBuilder.ToString().Replace("{{my id}}",id of the image).Replace("{{img url }}",url of the image)
//** You can add any animation and css style you want**