为treeview绘制大的复选框

时间:2016-05-18 05:42:42

标签: c# .net winforms treeview dpi

我试图让我的treeview的复选框更大。根据{{​​3}},默认情况下状态图像的上限为16x16,为了使用更大的状态图像,我需要在app.config文件中指定此条目:

<appSettings>
  <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>

我尝试将此添加到我的app.config并且它没有改变任何东西,问题是当我使用32x32复选框时,框架似乎实际上缩小了图像。

以下是我在treeview的构造函数中绘制和设置复选框的方法:

public class MultiStateTreeView : TreeView
{
    public MultiStateTreeView() : base()
    {
        ImageList ilStateImages = new ImageList();
        ilStateImages.ImageSize = new Size(32, 32);
        for (int i = 0; i <= 4; i++)
        {                                               
             Bitmap bmpCheckBox = new Bitmap(32, 32);
             Graphics gfxCheckBox = Graphics.FromImage(bmpCheckBox);                            
             switch (i)
             {                                              
                 case 0: cbsState = CheckBoxState.UncheckedNormal; break;
                 case 1: cbsState = CheckBoxState.CheckedNormal; break;
                 case 2: cbsState = CheckBoxState.MixedNormal; break;
                 case 3: cbsState = CheckBoxState.UncheckedDisabled; break;
                 case 4: cbsState = CheckBoxState.UncheckedDisabled; break;
             }
             CheckBoxRenderer.DrawCheckBox(gfxCheckBox, new Point(2, 2), cbsState); 
             gfxCheckBox.Save();
             ilStateImages.Images.Add(bmpCheckBox);                                 
        }

        base.CheckBoxes = true;
        this.StateImageList = ilStateImages;
    }
}

我有什么遗失的东西吗?

0 个答案:

没有答案