2011-07-27 19 views
3

MS ASP.NET 차트 컨트롤의 축 레이블 서식을 지정하는 데 대한 질문이 있습니다. 질문에 답하기 전에이 스크린 샷을 살펴보십시오. MS 차트 컨트롤 : 축 레이블 서식 지정

enter image description here

당신은 스크린 샷에서 볼 수 있듯이

는 축 레이블을 읽고 굵은 것으로 나타 어렵다. 이제 내 질문은 다음과 같습니다.

  • 축 레이블이 Arial 11px와 같이 보이지 않게하는 기본 차트 속성 인 굵은 글씨와 닫는 문자는 어느 것입니까?
  • 축 레이블의 모양을 읽기 쉽고 정리할 수있는 방법, 즉 일반적인 글꼴 가중치와 문자 사이의 간격은 어떻게됩니까?

책임있는 코드는 다음과 같습니다 설정에 대한 코드 개체

public Chart GetChart(ChartData chartDataData, IChartSettings settings) 
{ 
    var chart = new Chart 
    { 
     BackColor = Color.Transparent, 
     Height = settings.Height, 
     Palette = ChartColorPalette.None, 
     PaletteCustomColors = settings.PaletterCustomColors.ToArray(), 
     Width = settings.Width 
    }; 
    if (settings.ShowLegend) 
    { 
     chart.Legends.Add("Legend").Alignment = StringAlignment.Center; 
    } 
    AddChartArea(chart); 

    foreach (var seriesData in chartDataData.Series) 
    { 
     AddSeries(chart, seriesData, settings.ChartType); 
    } 

    chart.AlignDataPointsByAxisLabel(); 
    return chart; 
} 

private void AddChartArea(Chart chart) 
{ 
    var area = new ChartArea(); 
    area.AxisX.LabelStyle.Angle = -45; 
    area.AxisX.MajorGrid.LineColor = Color.Transparent; 
    chart.ChartAreas.Add(area); 
    area.AxisX.LabelStyle.Font = area.AxisY.LabelStyle.Font = new Font("Arial", 11, GraphicsUnit.Pixel); 
} 

private void AddSeries(Chart chart, SeriesData data, SeriesChartType chartType) 
{ 
    var series = new Series 
    { 
     ChartType = chartType, 
     Name = data.Name, 
     ToolTip = data.Name, 
     Url = data.Url 
    }; 

    foreach (var pointData in data.Points) 
    { 
     AddPoint(series, pointData.XValue, pointData.YValue); 
    } 
    chart.Series.Add(series); 
} 

private void AddPoint(Series series, string xValue, float yValue) 
{ 
    var point = new DataPoint 
    { 
     AxisLabel = xValue 
    }; 
    point.SetValueXY(xValue, yValue); 
    series.Points.Add(point); 
} 

입니다 : 도움을

public static ChartSettings TaskSummary = new ChartSettings 
{ 
    ChartType = SeriesChartType.StackedColumn, 
    Height = Unit.Pixel(300), 
    Width = Unit.Pixel(450), 
    PaletterCustomColors = new[] 
    { 
     Color.FromArgb(191, 214, 151), 
     Color.FromArgb(249, 255, 149), 
     Color.FromArgb(191, 79, 75), 
     Color.Green 
    }, 
    ShowLegend = true 
}; 

감사합니다.

+0

시도해 보셨습니까 ** area.AxisX.LabelStyle.Font.Bold = false **? 또한 글꼴 크기로 재생합니다. 즉, 12로 변경하고 그 다음에 어떻게 그려지는지 확인하십시오. – woohoo

답변

5

차트의 BackColor를 Color.Transparent으로 설정하면 AntiAliasing="Graphics"을 설정해야합니다.

+0

설명서를 참조하고 작동하는 이유를 설명해 주시겠습니까? – KFL

+0

이 수정본에 대한 가장 좋은 설명은 [여기]입니다 (https://social.msdn.microsoft.com/Forums/en-US/64c7d890-c98b-4392-9ec9-1b4af3e24300/labels-bold-when- background-transparent? forum = MSWinWebChart). 인용구 : "문제는 차트 컨트롤에서 사용하는 GDI +에 '깊숙이'있습니다 ... 투명 배경이있는 이미지에 텍스트를 그리고 텍스트 앤티 앨리어싱을 사용하는 경우 GDI +는 기본 배경으로 검정색을 사용하여 앤티 앨리어싱을 계산합니다. 앨리어싱 효과. 배경색을 단색으로 설정하거나 Chart.AntiAliasing = AntiAliasingStyles.Graphics;를 사용하여 텍스트 앤티 앨리어싱을 해제 할 수 있습니다. " – KFL

관련 문제