首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器类浏览器的最佳控制

浏览器类浏览器的最佳控制
EN

Stack Overflow用户
提问于 2014-08-26 09:00:39
回答 1查看 1.2K关注 0票数 3

我想要创建一个界面类似于Windows资源管理器的程序,即显示缩略图和名称、大小等,并且徘徊于要使用的控件。

我想要做的是:

  • 显示所有图片是由代码选择的文件夹。可以有数百个,使用数百MB,所以我需要它只呈现可见的部分,而不是整个东西。
  • 允许选择一个或多个图片用于代码的其他部分(应用过滤器,复制到其他地方等)。当然,某些选定的图像可能是不可见的,因此可能不会呈现。
  • 它应该允许每个项目使用几行信息(名称、大小、日期.)
  • 缩略图的大小应该很容易改变,如果条目或多或少都适合列(可以用代码来完成,但我希望它在控件中),我需要重新设置这些项。当然,这不应更改所选项目的列表(因此所选项目不是按行和列标识,而是按索引标识)。

我现在拥有的是这个(稍后将转到一个单独的函数)。

代码语言:javascript
复制
thumb[] thumbs;

public MainWindow() {
    InitializeComponent();

    int i;
    string[] files=Directory.GetFileSystemEntries(@"C:\images","*.jpg",SearchOption.AllDirectories);
    System.Drawing.Size mySize=new System.Drawing.Size(128,128);

    thumbs=new thumb[files.Length];
    for(i=0; i<files.Length ;i++){
        thumbs[i]=new thumb(files[i],mySize);
    }
    //MessageBox.Show("Loaded "+i.ToString()+" images");
}

这一点(稍后我可能会切换到使用Image.GetThumbnailImage()作为调整大小的基础):

代码语言:javascript
复制
class thumb {
    public Bitmap bmp;
    public Size   originalSize;
    public string path;

    public thumb(string path, Size targetSize) {
        Bitmap tempBmp;
        this.path=path;
        tempBmp=new Bitmap(path);
        originalSize=tempBmp.Size;
        bmp=new Bitmap(tempBmp,targetSize);
        tempBmp.Dispose(); //get our memory back
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-26 09:24:15

您可以使用ListBox作为包含缩略图、名称等控件的容器。您可以为ListBoxItem创建DataTemplate或创建新的UserControl,并将其用作ListBox的内容。

使用WrapPanel可以使它非常响应应用程序窗口的大小。

这里有一个示例,您需要根据您的需要进行更改,但这是一个很好的起点。

代码语言:javascript
复制
<ListBox x:Name="ListOfImages" ItemsSource="{Binding Images}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Width="120" Margin="10" HorizontalAlignment="Left">
                <Image Source={Binding ImagePath}" />
                <TextBlock Text={Binding Name}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapPanel />
    </ItemsPanelTemplate>
</ListBox>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25501855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档