精华内容
参与话题
问答
  • ImageList

    千次阅读 2011-01-17 22:57:00
    例如: CImageList m_imageList; //创建CImageList对象 m_imageList.Create(16, 16, ILC_COLOR8, 0, 4); //加载图标 m_imageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_ROOT));...

    例如:

    CImageList m_imageList;

    //创建CImageList对象
    m_imageList.Create(16, 16, ILC_COLOR8, 0, 4);
    //
    加载图标

    m_imageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_ROOT));

     

        然后该CTreeCtrl了,这是一个树形列表控件,提供了分层级结构显示数据的功能。这个控件有可视化的界面,可以通过界面编辑器进行创建,只需要拉到界面上即可;同样也可以通过Create函数创建一个树形列表控件,由于这种方法通常不用,这里不再赘言。另外该控件还有很多树形,如Has ButtonHas Line等,可以在界面编辑器的属性中查看并设置。

        树形控件有两个非常重要的数据结构:TV_ITEMTV_INSERTSTRUCT。前者用来描述一个树节点的信息;后者描述要插入树时所需的信息。结构如下:

    typedef struct _TV_ITEM {
        UINT       mask;          //
    结构成员有效性屏蔽位

        HTREEITEM  hItem;          //
    数据项控制句柄

        UINT       state;         //
    数据项状态

        UINT       stateMask;     //
    状态有效性屏蔽位

        LPSTR      pszText;       //
    数据项名称字符串

        int        cchTextMax;    //
    数据项名称的最大长度

        int        iImage;       //
    数据项图标索引号

        int        iSelectedImage;    //
    选中数据项图标索引号

        int        cChildren;      //
    子项标识

        LPARAM     lParam;        //
    程序定义的32位数据
    TVIF_PARAM
    } TV_ITEM, FAR *LPTV_ITEM;

     

    typedef struct _TV_INSER    TSTRUCT
    {
        HTREEITEM hParent;         //
    父项控制句柄

        HTREEITEM hInsertAfter;    //
    插入树项的位置

        TV_ITEM   item;             //
    数据项的结构

    } TV_INSERTSTRUCT, FAR *LPTV_INSERTSTRUCT;

     

        使用CImageList可以方便的为CTreeCtrl提供图标。首先设置树形控件的图形列表:

    m_treeStruct.SetImageList(&m_imageList,TVSIL_NORMAL);

        然后在添加树形列表节点时可以设置节点的选中时图标索引和未选中时的图标索引。如果没有设置,则数据结构会默认为0。数据结构为上面的TV_ITEM

        向树形控件中添加根节点

        添加根节点是比较麻烦的,具体代码如下:

    TVINSERTSTRUCT tvInsert;                        //定义一个插入结构
    HTREEITEM hParent;                                //
    用来保存插入的位置

    tvInsert.hParent = NULL;                        //
    设置父节点为空

    tvInsert.hInsertAfter = NULL;                    //
    设置之前的节点同样为空

    tvInsert.item.mask = TVIF_TEXT;                    //
    设置掩码

    tvInsert.item.pszText = _T("
    公司");                //要显示的文字为公司

    hParent = m_treeStruct.InsertItem(&tvInsert);    //
    插入树形结构中,并返回插入的位置

     

        有了父节点hParent ,再要插入子节点就方便了:

    //添加第一级项目"技术部"
    //
    参数列表:显示的文字、已选择的图标索引、未选择的图标索引、父节点的HTREEITEM

    HTREEITEM h1 = m_treeStruct.InsertItem("
    技术部",1,2,hParent);

    //添加第一级项目"管理学院"下的子项目,即第二级
    m_treeStruct.InsertItem("ERP
    ",3,4,h1);
    m_treeStruct.InsertItem("UI
    ",3,4,h1);
    m_treeStruct.InsertItem("
    核心研发组",3,4,h1);

    //添加其他第一级项目
    m_treeStruct.InsertItem("
    销售部",1,2,hParent);

     

        展开树节点:

    //展开第一级项目
    m_treeStruct.Expand(hParent,TVE_EXPAND);

     

        向选中节点添加子节点:

    //获取树形控件选择的项目
    HTREEITEM hItem = m_treeStruct.GetSelectedItem();
    //
    获取选择项目的子项目图像的索引、子项目选择后的图像索引,

    //
    以便设置新添加的项目索引

    int index,selindex;
    m_treeStruct.GetItemImage(m_treeStruct.GetChildItem(hItem),index,selindex);
    //
    插入新的子项目到选择的项目下

    m_treeStruct.InsertItem(m_strItem,index,selindex,hItem);
    //
    展开选择的项目,以便查看新增加的子项

    m_treeStruct.Expand(hItem,TVE_EXPAND);

        删除选中节点:

    //获取树形控件选择的项目
    HTREEITEM hItem = m_treeStruct.GetSelectedItem();
    //
    删除选择的项目以及其下的所有子项

    m_treeStruct.DeleteItem(hItem);

     

     

    CImageList控件详解
    CImageList
    控件2008-04-17 10:44图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。能够利用WINDOWS32位应用程式接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。


      (一)图像控制的对象结构


      1、图像控制的数据成员


       m_hImageList 连接图像对象的控制句柄


      2、图像控制的建立方法


       CimageListimageList建立图像控制对象结构


       Create 初始化图像列表并绑定对象


      图像控制的建立方法如下:


    BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );

    BOOL Create( UINT nBitmapID, int cx, int nGrow, COLORREF crMask );

    BOOL Create( LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask );

    BOOL Create( CImageList& imagelist1, int nImage1, CImageList& imagelist2

    ,int nImage2,int dx, int dy );


      其中各项参数的含义为:cx定义图像的宽度,单位为象素;cy定义图象的高度,单位为象素;nFlags确定建立图像列表的类型,能够是以下值的组合:ILC_COLORILC_COLOR4ILC_COLOR8ILC_COLOR16ILC_COLOR24ILC_COLOR32ILC_COLORDDBILC_MASKnInitial用来确定图像列表包含的图像数量;nGrow用来确定图像列表可控制的图像数量。


       NbitmapID 用来确定图像列表联系的位图标志值;crMask表示颜色屏蔽位;


       LpszBitmapID 用来确定包含位图资源的标识串;


      imagelist1 指向图像列表控制对象的一个指针;nImage1图像列表1中包含的图像数 量;imagelist2指向图像列表控制对象的一个指针;nImage2图像列表2中包含的图像数量;dx表示以象素为单位的图像宽度;dy表示以象素为单位的图像高度。


      同样,图像控制的建立也包括两个步骤,首先建立图像列表结构,然后建立图像列表控制。


      3、图像控制的属性类


      图像控制的属性类包括返回m_hImageList.控制句柄GetSafeHandle、取得图像列表中的图像数量GetImageCount、配置图像列表的背景颜色SetBkColor、取得图像列表的背景颜色SetBkColor和取得图像的有关信息SetBkColor


      4、图像控制的操作方法


      图像控制的操作方法包括将一个图像列表绑定到一个对象上Attach、将对象上的图像列表解除绑定并返回句柄Detach、删除一个图像列表DeleteImageList、将一个图像增加到图像列表中Add和将一个图像从图像列表中删除Remove等。


      (二)图像控制的应用技巧


      对于图像控制,同样不能单独使用,必须和列表控制、树控制和标签控制相互结合应用,下面分别介绍其具体应用技巧。


      1、图像控制在列表控制中的应用技巧


      配置图像控制CListCtrl::SetImageList的调用格式如下:


    CImageList* SetImageList( CImageList* pImageList, int nImageList );

      其返回值是指向前一个图像列表控制的一个指针,假如不存在前一个图像列表则为NULL;其中参数pImageList是指向图像列表的标识,nImageList是图像列表的类型,能够是如下值:


      LVSIL_NORMAL 用大图标方式进行图像列表;


      LVSIL_SMALL 用小图标方式进行图像列表;


      LVSIL_STATE 以图像状态进行图像列表;


      取得图像控制CListCtrl::GetImageList的调用格式如下:


    CImageList* GetImageList( int nImageList ) const;

      其返回值为指向图像列表控制的指针,其中nImageList用来确定取得返回值的图像列表的 值,其取值和配置图像列表函数相同。


      图像控制在列表控制中的应用示例

     

    CImageList Cil1,Cil2; //定义大小图标像列表

      CVCLISTApp *pApp=(CVCLISTApp *)AfxGetApp();//取得列表控制程式


      Cil1.Create(32,32,TRUE,2,2); //建立32位图像控制


      Cil1.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像


      Cil1.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像


      Cil2.Create(16,16,TRUE,2,2); //建立16位图像控制


      Cil2.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像


      Cil2.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像


      m_ListCtrl.SetImageList(&Cil1,LVSIL_NORMAL);//配置大图标控制


      m_ListCtrl.SetImageList(&Cil2,LVSIL_SMALL);//配置小图标控制



      2、图像控制在树控制中的应用技巧


      配置图像控制CTreeCtrl::SetImageList的调用格式如下:


    CImageList* SetImageList( CImageList * pImageList, int nImageListType );

      其返回值为指向前前一个图像列表的指针,否则为NULL;参数pImageList为指向图像列表的标识,假如pImageListNULL则任何的图像都将从树控制中被清除;nImageListType为图像列表配置的类型,能够是如下值之一:


      TVSIL_NORMAL 配置正常图像列表,其中包括选中和非选中两种图标;


      TVSIL_STATE 配置图像列表状态,指用户自定义状态;


      取得图像控制CTreeCtrl::GetImageList的调用格式如下:


    CImageList* GetImageList( UINT nImage );

      假如调用成功则返回图像列表控制指针,否则为NULLnImage为取得返回值的图像列表类型,其取值和取得图像列表控制完全相同。


      图像控制在树控制中的应用示例


    CImageList Cil1,Cil2;//
    定义大小图标像列表


    CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp();//
    获取应用程式指针


    Cil1.Create(16,16,ILC_COLOR,2,2);//
    建立图像控制


    Cil1.Add(pApp->LoadIcon(IDI_PM));//
    增加选中状态图像


    Cil1.Add(pApp->LoadIcon(IDI_CJ));//
    增加非选中状态图像


    m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//
    配置图像控制列表



      然后在树控制的结构定义中进行如下配置:


    TCItem.item.iImage=0; //
    配置未选中图像索引号


    TCItem.item.iSelectedImage=1;//
    配置选中时图像引号



      3、图像控制在标签控制中的应用技巧


      配置图像控制CTabCtrl::SetImageList的调用格式


    CImageList * SetImageList( CImageList * pImageList );

      其返回值为指向前一个图像列表的指针,假如不存在前一个图像列表则为NULLpImageList为标识TAB控制的图像列表指针。


      取得图像控制CTabCtrl::GetImageList的调用格式


    HIMAGELIST GetImageList() const;

      其返回值为指向TAB控制的图像列表指针,假如调用不成功则为NULL


      其应用技巧较前两种更加简单,这里不再赘述。

     

    1.综述
    MFCCImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBoxCComboBoxCComboBoxExCTabCtrl以及CTreeCtrl一起使用,为他们提供图标资源。


    图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以数组方式存储的,图像列表通常由大图标或位图构成,其中包含位图模式。实际上,所有的在同一个图象列表中的图标都被存储在一个屏幕设备的位图中。



    2.
    添加图像的两种方法

    通常可以向CImageList对象中添加位图和图标资源。其资源可以是程序中资源文件中的资源,也可以直接从外部文件调入。



    (1)
    从程序中资源文件中添加图标和位图图像如下所示(通常这是最为简单直观的方法):


    // 
    创建一个CImageList类的指针变量

    CImageList* pImageList;
    pImageList = new CImageList();
    pImageList->Create(32, 32, ILC_COLOR32, 0, 4); // 
    必不可少


    // 
    添加图标,图标可以随图像列表大小自动拉伸

    pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));

    // 
    添加位图,并使黑色为透明色,如果图像列表大小和位图大小不一致可能会导致天添加失败

    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP1)
    pImageList->Add(&bmp, RGB(0, 0, 0));
    bmp.DeleteObject();
    bmp.LoadBitmap(IDB_BITMAP2)
    pImageList->Add(&bmp, RGB(0, 0, 0));




    (2)
    从外部文件中添加图标和位图图像代码如下所示(这种方法可以是可执行程序更小,便于发行)


    HBITMAP hBitmap;
    CBitmap *pBitmap;
    CString FilePathName = "e:/TIME.bmp";
    pBitmap = new CBitmap;
    //
    从文件导入位图


    HBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName,

    IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    pBitmap->Attach(hBitmap);
    m_pImageList->Add(pBitmap, RGB(0,0,0));




    这样一个图像列表控件就创建好了,并且已经添加了图像,接下来就可以在其它控件中使用其中的图像。通常需要调用SetImageList(m_pImageList)将当前图像列表设置为引用图像源。

    展开全文
  • c#imagelist

    2016-03-10 15:09:21
    c#imagelist
  • 控件listview项图绑定imagelistimagelist最大才为256!怎么变大?急 winform的(C#)开发,我做的listview的项客户觉得小了,可是imagelist只能256*256大小!而且已经很大了啊,再大就超出256了。不用imagelist...
  • imagelist用法

    2018-02-03 09:21:00
    1、添加一个Imagelist控件,并双击控件图标如下图 2、点击新增按钮 转载于:https://www.cnblogs.com/semth/p/8408628.html

    1、添加一个Imagelist控件,并双击控件图标如下图

    2、点击新增按钮

     

    转载于:https://www.cnblogs.com/semth/p/8408628.html

    展开全文
  • Imagelist 控件

    2018-03-14 14:58:00
    Imagelist 控件可以添加图标给button按钮控件用,它下面有两个属性可以设置相关,(imageList,imageindex)属性 转载于:https://www.cnblogs.com/jasonch123/p/8567607.html

    Imagelist 控件可以添加图标给button按钮控件用,它下面有两个属性可以设置相关,(imageList,imageindex)属性

    转载于:https://www.cnblogs.com/jasonch123/p/8567607.html

    展开全文
  • ImageList控件

    2013-05-14 19:46:00
    代码添加图片 ImageList1.Images.Add(Image.FromFile("c:\\windows\\FeatherTexture.bmp")); //设置控件的排列样式 listView1.View = View.Tile; //设置属性 listView1...
    代码添加图片 
    ImageList1.Images.Add(Image.FromFile("c:\\windows\\FeatherTexture.bmp"));

     

                //设置控件的排列样式
                listView1.View = View.Tile;
                //设置属性
                listView1.LargeImageList = imageList1;
                //手动添加图片或者用代码添加
                imageList1.Images.Add(Image.FromFile(@"F:\图片\Pictures\立体图片\Fish06.jpg"));
                imageList1.Images.Add(Image.FromFile(@"F:\360wallpaper_dt.jpg"));
                //向空间中添加项目
                listView1.Items.Add("张三");
                listView1.Items.Add("李四");
                listView1.Items.Add("王五");
                listView1.Items.Add("001");
                listView1.Items.Add("002");
                listView1.Items.Add("003");
           for (int i = 0; i <= 5; i++)
           {
            if (i < 3)
            {
                listView1.Items[i].ImageIndex = 0;
            }
            else
            {
                listView1.Items[i].ImageIndex = 1;
            }
           }

     

     //设置控件的排列样式
                //listView1.View = View.Tile;
                // listView1.View = View.List;
                listView1.View = View.SmallIcon;
                //设置属性
                listView1.LargeImageList = imageList1;
                ////手动添加图片或者用代码添加
                //imageList1.Images.Add(Image.FromFile(@"F:\图片\Pictures\立体图片\Fish06.jpg"));
                //imageList1.Images.Add(Image.FromFile(@"F:\360wallpaper_dt.jpg"));
                listView1.Groups.Add(new ListViewGroup("姓名",HorizontalAlignment.Left));
                listView1.Groups.Add(new ListViewGroup("编号",HorizontalAlignment.Left));
                //向空间中添加项目
                listView1.Items.Add("张三");
                listView1.Items.Add("李四");
                listView1.Items.Add("王五");
                listView1.Items.Add("001");
                listView1.Items.Add("002");
                listView1.Items.Add("003");
                //将listView1中索引为0、1、2的项添加到第一组
                listView1.Items[0].Group = listView1.Groups[0];
                listView1.Items[1].Group = listView1.Groups[0];
                listView1.Items[2].Group = listView1.Groups[0];
                //将listView1中索引为3、4、5的项添加到第二组
                listView1.Items[3].Group = listView1.Groups[1];
                listView1.Items[4].Group = listView1.Groups[1];
                listView1.Items[5].Group = listView1.Groups[1];
                //for (int i = 0; i <= 5; i++)
                //{
                //    if (i < 3)
                //    {
                //        listView1.Items[i].ImageIndex = 0;
                //    }
                //    else
                //    {
                //        listView1.Items[i].ImageIndex = 1;
                //    }
                //}

     http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(SYSTEM.WINDOWS.FORMS.IMAGELIST);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true

    转载于:https://www.cnblogs.com/chenyongblog/archive/2013/05/14/3078377.html

    展开全文
  • ImageList 控件

    2014-06-05 16:01:00
    http://qianshao.blog.51cto.com/935360/208654/ 转载于:https://www.cnblogs.com/muxiaoruo/p/3770519.html
  • ImageList00

    2011-01-17 23:03:00
    1.综述 在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,...
  • ImageList研究

    千次阅读 2009-02-28 11:49:00
    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace HelloWinForm{
  • entity imageList

    2015-10-02 15:47:19
    怎么将ENTITY 宣告IMAGE格式,加入imageList POSEntities context=new POSEntities(); var classlist = context.CLASS.Where(o => o.State == true).OrderByDescending(o => o.Seq).ToList(); ...
  • ImageList控件应用实例

    2010-05-24 21:33:05
    ImageList控件应用实例,ImageList控件应用实例 VB
  • c# imagelist ,imageindex

    2014-05-19 07:22:25
    c# imagelist中有图片,imageindex下拉条中没有怎么回事
  • 浅谈ImageList

    千次阅读 2016-07-05 17:01:50
    ImageList组件用了很久,但是一直不太清楚它的实现原理,今天专门特意花了时间倒腾了下,终于弄明白了!于是在这里和大家分享下! 在设计页面中打卡工具箱-组件 找到ImageList组件,将它直接拖到页面上,将会自动...
  • ImageList 导出文件

    2018-02-06 16:48:47
    将找不到源文件的资源导出成文件格式 以便再次利用  foreach (var key in ImageList.Images.Keys)  {  MaterialImageList.Images[key].Save("path" + key);  }
  • ImageList存储图像控件,但是不能显示图像 ImageSize:图像大小控制 ColorDepth:8bit也就是256色,位数越高显示效果越好 在窗体显示ImageList中的图像:  //创建图像变量 Image img1 = Image.FromFile(@"...
  • ImageList 载入图片

    2019-07-21 23:01:42
    Var aBitmap: TBitmap; begin aBitmap := TBitmap.Create; ... aBitmap.LoadFromFile('00.bmp');... ImageList1.AddMasked(aBitmap, aBitmap.TransparentColor); finally aBitmap.Free; ...
  • TreeView和ImageList

    2012-04-16 13:58:00
    TreeView和ImageList  初学者因为所知道的知识有限所以有很多地方做的可能不合常理,如果大家有什么建议或想法,大家尽管说。  数据库建表(这里用的是Oracle)    数据库操作类代码: View Code 1...
  • vb imagelist 作用

    2012-12-04 11:09:00
    以下资料来自MSDN关于ImageList 控件帮助文档:ImageList 控件不能独立使用,只是作为一个便于向其它控件提供图象的资料中心。ImageList 控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个...
  • ImageList 构造函数

    2014-06-05 16:53:00
    http://technet.microsoft.com/zh-cn/magazine/sx82acf6(VS.110).aspx 转载于:https://www.cnblogs.com/muxiaoruo/p/3770685.html
  • 2.3 C#ImageList

    2018-12-24 11:51:00
    ImageList 图像大小都是一样,通过属性ImageSize控制 图像通过索引或者键值来指定 方法 Add:添加图像 RemoveAt移除单个图像,根据索引 Clear:清除所有图像 private void button1_Click(object sender, ...
  • ImageList的使用

    2013-04-14 19:06:59
    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;...namespac
  • CTreeCtrl的ImageList

    2011-10-11 16:39:45
    CTreeCtrl的ImageList不能是局部变量
  • ImageList_SetOverlayImage

    2010-07-11 10:14:00
    ImageList_SetOverlayImage
  • ImageList to DIB

    2006-11-26 01:30:00
    ImageList to DIB --------------------------------------------------------------------------------This article was contributed by Mike Wild. In my PrintTree sample I wanted to print the tree in c

空空如也

1 2 3 4 5 ... 20
收藏数 1,716
精华内容 686
关键字:

imagelist