代码之家  ›  专栏  ›  技术社区  ›  IbrarMumtaz

如何设置TreeView控件的背景图像(VS 2008/.Net 3.5/C#/WinForms)

  •  2
  • IbrarMumtaz  · 技术社区  · 15 年前

    我一直在做一些研究,这似乎是不可能的,除非我开始挖掘互操作性,即PInvoke和什么不是我真正的壶鱼。我重新发布这个问题,因为我想知道是否有人已经设法做到这一点?

    我使用.png为我所有的图像,并得到一个专业人士提供我的图像,所以我知道图像来与最好的质量最合适的格式。

    标准的树状视图控件似乎不直接支持背景图像,因此也不允许将其背景颜色设置为透明?有人对这两个有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Roman Starkov    15 年前

    如果您愿意使用第三方库,请看 http://objectlistview.sourceforge.net/cs/index.html -但是请注意,这是GPL。在那里设置背景图像很容易。

        2
  •  3
  •   Hans Passant    15 年前

    完成 非常 信誉良好的部件供应商。

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    class MyTreeView : TreeView {
        private Image mImage;
        public Image Image {
            get { return mImage; }
            set { mImage = value; Invalidate(); }
        }
        protected override void OnAfterCollapse(TreeViewEventArgs e) {
            if (mImage != null) Invalidate();
            base.OnAfterCollapse(e);
        }
        protected override void OnAfterExpand(TreeViewEventArgs e) {
            if (mImage != null) Invalidate();
            base.OnAfterExpand(e);
        }
        protected override void WndProc(ref Message m) {
            base.WndProc(ref m);
            if (m.Msg == 0x14 && mImage != null) {
                using (var gr = Graphics.FromHdc(m.WParam)) {
                    gr.DrawImage(mImage, Point.Empty);
                }
            }
        }
    }