Как нарисовать System.Drawing.Icon для SplitterPanel? - PullRequest
0 голосов
/ 06 декабря 2010

У меня есть что-то вроде этого:

var systemIcon = SystemIcons.Information;
verticalSplitPanel.SplitterDistance = systemIcon.Width;

var g = verticalSplitPanel.Panel1.CreateGraphics();
g.DrawIcon(systemIcon, 0, 0);

Это компилируется и запускается без ошибок, но по какой-то причине значок не виден.

Я тоже пробовал это:

var systemIcon = SystemIcons.Information;
verticalSplitPanel.SplitterDistance = systemIcon.Width;

var g = verticalSplitPanel.Panel1.CreateGraphics();
g.DrawImage(systemIcon.ToBitmap(), 0, 0);

Снова он компилируется и запускается без ошибок, но значок не отображается.

Как мне отобразить этот значок?

1 Ответ

1 голос
/ 06 декабря 2010

Ваш код может закрасить значок на поверхности панели, но он будет очищен всякий раз, когда панель решит перекрасить себя.Вместо использования объекта Graphics из вызова verticalSplitPanel.Panel1.CreateGraphics() вы должны обработать событие панели Paint и использовать объект Graphics, указанный в аргументах этого события.

Попробуйте это:

verticalSplitPanel.Panel1.Paint += (s, eargs) =>
    {
        var icon = SystemIcons.Information;
        eargs.Graphics.DrawIcon(icon, 0, 0);
    };
...