2013-03-22 69 views
0

我畫與CorePlot,這我變成了查看,打印和電子郵件發送PDF的餅圖。所有這一切都很好,除了當我添加一個borderLineStyle時,我還會在餅圖的邊緣產生人爲因素。CorePlot餅圖borderLineStyle文物

你真的不注意到他們的iPhone的屏幕上,或當打印,但通過電子郵件和在大屏幕上(在Acrobat Reader)看時,他們立即明顯。此屏幕截圖縮放至400%,但它們在100%時也清晰可見。您可以在餅圖的內部和外部看到裁剪工件。

CPTPieChart with artifacts round the edges

如果我離開關borderLineStyle然後餅圖是非常乾淨的。只有在設置了線條樣式時纔會顯示人工製品。我這樣做:

CPTMutableLineStyle *segmentLineStyle = [CPTMutableLineStyle lineStyle]; 
segmentLineStyle.lineColor = colour; 
segmentLineStyle.lineWidth = size; 
_pieChart.borderLineStyle = segmentLineStyle; 

對我來說,它們看起來像裁剪或抖動的文物,所以我嘗試設置背景顏色和圖形填充爲白色或透明的,但是這並沒有區別。

我使用CorePlot 1.1。有沒有人有任何想法,爲什麼發生這種情況?任何幫助將非常感激。

謝謝。

+1

您是否使用了覆蓋層或影子?核心圖形呈現爲不支持透明度的舊PDF格式。 – 2013-03-23 10:02:34

+0

謝謝埃裏克,我使用覆蓋,但我沒有嘗試過,這沒有什麼區別:( – AW101 2013-03-25 20:27:38

回答

0

要回答我的問題。感謝Eric提示Core Graphics呈現不支持幻燈片的舊PDF格式,我想我會改變我推銷餅圖的方式。

以前我只是渲染餅圖到PDF背景下,這樣的:

CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
[pieChartView.layer renderInContext:pdfContext]; 

現在,我第一次渲染餅圖一個UIImage,然後渲染圖像的PDP上下文。就像這樣:

// Pre-render the pie chart into a temporary UIImage 
UIGraphicsBeginImageContextWithOptions (pieChartView.frame.size, YES, 0.0f); 
CGContextRef tmpContext = UIGraphicsGetCurrentContext(); 
[pieChartView.layer renderInContext:tmpContext]; 
UIImage *pieChartTmpImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

// Draw the pre-rendered pie chart in to the PDF context. 
[pieChartTmpImage drawInRect:CGRectMake(0, 0, pieChartTmpImage.size.width, pieChartTmpImage.size.height)]; 

現在,這使得該餅圖乾淨:)

這是值得指出的是,當這個代碼運行並臨時圖像內容被嵌套在PDP上下文已經建立,但是這是精細。

+0

你可以使用'-imageOfLayer'方法從Core Plot圖層獲得'UIImage'。 – 2013-03-25 22:55:56

+0

是的,這將工作我的問題是我的'pieChartView'包含需要渲染,一些核心的情節,有些不是。'renderInContext'只是它所有一氣呵成:)你的幫助感謝幾個要素! – AW101 2013-03-26 22:16:57