首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewImageColumn图像布局不起作用

DataGridViewImageColumn图像布局不起作用
EN

Stack Overflow用户
提问于 2015-04-30 14:07:57
回答 1查看 618关注 0票数 0

我试图用图像列在datagridview上显示一个图像;但是,它看起来是垂直拉伸和水平压缩的。我不知道是什么限制了它以这种方式显示。

网格生成

代码语言:javascript
复制
            gvPackage.Columns.Clear();

            gvPackage.AutoGenerateColumns = false;
            DataGridViewColumn[] cols = new DataGridViewColumn[5];
            GridColumn gc = null;

            cols[0] = new DataGridViewTextBoxColumn();
            cols[0].DataPropertyName = "ID";
            cols[0].Name = "ID";
            cols[0].Visible = false;

            cols[1] = new DataGridViewTextBoxColumn();
            cols[1].DataPropertyName = "iLive";
            cols[1].Name = "iLive";
            cols[1].Visible = false;

            cols[2] = new DataGridViewTextBoxColumn();
            cols[2].DataPropertyName = "iExplicit";
            cols[2].Name = "iExplicit";
            cols[2].Visible = false;

            cols[3] = new DataGridViewImageColumn();
            cols[3].Name = "Icon";
            cols[3].Width = 70;
            cols[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            cols[3].FillWeight = 1F;

            cols[4] = new DataGridViewTextBoxColumn();
            cols[4].DataPropertyName = "sName";
            cols[4].Name = "sName";
            cols[4].Width = 216;
            cols[4].FillWeight = 50.5166F;

            gvPackage.Columns.AddRange(cols);

            List<Package> _pl = _______Manager.SHARED_RES;

            foreach (Package p in _pl)
            {
                gvPackage.Rows.Add(
                    p.ID,
                    p.iLive,
                    p.iExplicit,
                    gImageList.Images["imgNoExplicitNoLive"],
                    p.sName
                    );
            }

单元格格式:

代码语言:javascript
复制
 private void gvPackage_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gvPackage.Columns[e.ColumnIndex].Name == "Icon")
            {
                bool isExp = this.gvPackage.Rows[e.RowIndex].Cells[2].Value.ToString() == "1";
                bool isLive = this.gvPackage.Rows[e.RowIndex].Cells[1].Value.ToString() == "1";
                if (isExp && isLive)
                {
                    e.Value = gImageList.Images["imgExplicitLive"];

                }
                else
                    if (!isExp && isLive)
                    {
                        e.Value = gImageList.Images["imgNoExplicitLive"];
                    }
                    else
                        if (isExp && !isLive)
                        {
                            e.Value = gImageList.Images["imgExplicitNoLive"];
                        }
                        else
                            if (!isExp && !isLive)
                            {
                                e.Value = gImageList.Images["imgNoExplicitNoLive"];
                            }
            }
        }

不良形象:

源图像:

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 14:45:13

从检查gImageList.Imagesize开始!

它的默认使用的平方图像大小为16x16!

在加载Images 之前,将其更改为的大小:

代码语言:javascript
复制
gImageList.ImageSize = new Size(61,12);

请注意,all Images需要具有相同的大小。如果他们没有,你应该改变他们,远远好于拉伸ImageList将适用!

还请注意,Images中的ImageList是限制为256x256像素。

您可能还想检查一下您是否满意它的ColorDepth = Depth8Bit

显然,您的Column/Cell也需要提供足够的空间!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29969984

复制
相关文章

相似问题

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