2009-06-08 3 views
0

하나의 연속 막대처럼 보이도록 ToolStripPanel에 포함 된 ToolStrip과 동일한 그리기 스타일을 갖기 위해 노력하고 있습니다. ToolStripProfessionalRenderer를 사용하여 ToolStrip을 사용하여 Windows 작업 표시 줄과 동일한 스타일을 적용 할 수 있습니다.C# ToolStripPanel 그리기 질문

나는 ToolStripProfessionalRenderer에서 파생 된 새로운 렌더러를 작성하여 가까운 입수했습니다 :

class CustomRenderer : ToolStripProfessionalRenderer 
    { 
     protected override void OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs e) 
     { 
     base.OnRenderToolStripPanelBackground(e); 

     LinearGradientBrush lgb = new LinearGradientBrush(e.ToolStripPanel.ClientRectangle, this.ColorTable.ToolStripGradientBegin, this.ColorTable.ToolStripGradientEnd, LinearGradientMode.Vertical); 
     e.Graphics.FillPath(lgb, e.ToolStripPanel.ClientRectangle); 
     } 
    } 

이 올바른 색상으로 그라데이션 모양을 만들지 만 그들은 매우 잘 일치하지 않습니다. 그래디언트의 색상 수가 많아서 펼치기가 길어지는 것 같습니다.

저는이 코드에 표시되지 않은 ToolStrips의 테두리를 설명했지만 여전히 올바르게 일치하지 않습니다.

누구나 이런 일이 발생하는 방법을 알고 계십니까?

답변

2

나는 마침내 이것을 알아 냈다. 상단 그라데이션 -

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

배경은 두 부분으로 그려 질 필요가있다 :

ToolStripPanelProfessionalRenderer의 COLORTABLE 우리가에 관심이있는 세 가지 색상이있다 , 그리고 하단 구배.

상단이 '시작'색상에서 '중간'색상으로 바뀌고 하단이 '중간'색상에서 '끝'색상으로 바뀝니다.

완벽한 모양 ...

1

설치 색상을 확인하십시오. 32 비트 색상이없는 시스템에서도 비슷한 문제가 발생했습니다. 32 비트 미만의 색상은 미묘한 차이가있었습니다. 32 비트 컬러 시스템이 멋지게 보입니다.

우리는 결코 해결책을 찾지 못했지만 사용자에게 32 비트 색상 요구 사항을 적용 할 수 있습니다. ;-)

+0

제안에 감사드립니다. 나는 그것에 대해 생각하지 않았습니다. 불행히도 그 트릭을하지 않았다 : (나는 생각을 포기해야한다고 생각하기 시작했습니다. – Matt