2016-10-26 9 views
0

:는 C#으로 대신 픽셀의 밀리미터에서 MS 차트의 크기를 설정하는 방법은 다음 코드를 사용하여 C#으로 밀리미터 차트 개체의 크기를 설정하려고

var chart = new Chart(); 
chart.RenderingDpiX = 300; 
chart.RenderingDpiY = 300; 
chart.CreateGraphics().PageUnit = GraphicsUnit.Millimeter; 
chart.Size = new Size(290, 200); // meant to be 290 millimetre not pixel 
... 
chart.SaveImage(@"D:\Temp\tttt.png", ChartImageFormat.Png); 

나는 구원의 크기를 예상 이미지는 약 290 * (300/254) = 3425 픽셀이지만 이미지의 크기는 290 픽셀 x 200 픽셀입니까?

는 또한

private void ChartPostPaint(object sender, ChartPaintEventArgs e) 
{ 
    var g = e.ChartGraphics.Graphics; 
    g.PageUnit = GraphicsUnit.Millimeter; 
} 

를 사용하여 postPaint 이벤트 페이지 단위를 설정하려고하지만이 중 하나가 작동하지 않습니다! 픽셀 대신 밀리미터 또는 인치로 차트의 크기를 설정하는 방법을 알려주십시오.

+0

당신이 mm를 사용할 수 있다고 말한다 옵션이 없습니다 측정 단위. 당신을 위해 그것을 할 방법을 만들려고 했습니까? – eg16

+0

MM은 실제 단위이며 실제로 인쇄 할 때만 의미가 있습니다. 특정 dpi 해상도로 특정 픽셀 크기를 원할 경우 할 수 있지만 화면에서는 그냥 의미가 없습니다. 설정. [RenderingDpiX/Y] (https://msdn.microsoft.com/en-US/en-en/library/system.windows.forms.datavisualization.charting.chart.renderingdpix%28v=vs.110%29. aspx)는 당신이 사용하기위한 것이 아닙니다! 이미지에 DrawToBitmap과 setResolution을 사용하고 저장하십시오! 또한 : CreateGraphics를 절대로 사용하지 마십시오. – TaW

답변

0

Chart()의 문서에서 기본 측정 단위는 px 인 것으로 보입니다.
mm에 값을 줄 수있는 방법의 입력으로 px을 사용할 수 있습니다. 그래서

private double toMM(int _px) 
{ 
    return this._px*(300/254); 
} 

를 이제 같은 것이다 :
당신이 쓸 수 이렇게하려면 차트 클래스의 공식 문서에서

chart.Size = new Size(toMM(290), toMM(200));