与GIF图像列表

时间:2013-08-09 14:55:42

标签: c# .net vb.net .net-2.0 animated-gif

我自己控制,这个控件允许有一个图像加载。它有一些预先加载的图像,我想让程序员使用这个控件来选择他们想要的图像。

我的第一次尝试是使用ImageList,但由于它不接受GIF图像我需要一个workarround。该控件在PictureBox中显示GIF。

我的问题是:有任何方法可以将图像作为属性公开给可视IDE,就像ImageList一样(使用一点预览选择像ComboBox这样的图像)而不使用图像列表?

1 个答案:

答案 0 :(得分:1)

如果有人需要解决方案:

<TypeConverter(GetType(ImageKeyConverter))> _
<RelatedImageList("LoadingImageList")> _
<Editor("System.Windows.Forms.Design.ImageIndexEditor, System.Design", GetType(Drawing.Design.UITypeEditor))> _
<Description("Imagen de carga que se mostrará en el control cuando se indique.")> _
Public Property LoadingImageKey() As String
    Get
        Return sPic
    End Get
    Set(ByVal value As String)
        sPic = value
    End Set
End Property

为了将GIF图像添加到ImageList中,我将它们添加到资源中,并在创建控件时将它们加载到Imagelist中。我有一个辅助var来保存GIFS,图像与字符串键相关:

Private Sub SysInfoControl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim result As Resources.ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True)

    If pics.Count = 0 Then
        For Each elem As DictionaryEntry In result
            If elem.Value.GetType Is GetType(Bitmap) Then
                pics.Add(elem.Key.ToString(), CType(elem.Value, Bitmap))
                ImageList1.Images.Add(elem.Key.ToString(), CType(elem.Value, Bitmap))
            End If
        Next
        If pics.ContainsKey(sPic) Then picBoxLoading.Image = pics(sPic)
    End If
End Sub

结果示例:

enter image description here