2011-06-29 108 views
1

我使用這個代碼來創建一個圓角走投無路的圖像:描繪軌跡行程和陰影(IOS)

CGContextBeginPath(context); 
CGRect rect = CGRectMake(0, 0, imageObj.size.width, imageObj.size.height); 

    CGContextAddRect(context, rect); 


CGContextSaveGState(context); 
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect)); 
CGContextScaleCTM (context, ovalWidth, ovalHeight); 
fw = CGRectGetWidth (rect)/ovalWidth; 
fh = CGRectGetHeight (rect)/ovalHeight; 
CGContextMoveToPoint(context, fw, fh/2); 
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); 
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); 
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); 
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); 
CGContextRestoreGState(context); 

CGContextClosePath(context); 
CGContextClip(context); 

CGContextDrawImage(context, CGRectMake(0, 0, w, h), imageObj.CGImage); 

我如何添加一箇中風和陰影?

到目前爲止我還沒有工作...

謝謝!

+1

那路徑繪製代碼繪製一個橢圓,不是一個圓角矩形。對於圓角矩形,您需要選擇一個圓角半徑,然後將該半徑用作每個圓弧的半徑。將包括從一個角落到下一個的直線。 –

回答

3

您必須執行CGContextStrokePath或CGContextFillPath來繪製您所做的路徑。 (請確保您設置的筆觸顏色先用CGContextSetStrokeColor),然後你可以使用CGContextSetShadow做一個影子,這裏是描述CoreGraphics在陰影的蘋果開發者頁面:

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_shadows/dq_shadows.html

+0

謝謝,我已經嘗試過失敗,它沒有畫出線...請詳細說明如何做到這一點? –

+1

@Asaaf b是否有可能你的路徑越來越剪裁,你試圖從CGContextClip繪製 –

+2

@Assaf b:我注意到你做了一個翻譯和縮放,但是然後你沒有做任何事情就會興高采烈。由於您自己計算轉換後的座標,所以翻譯和縮放步驟是不必要的和錯誤的,因此它們會雙重轉換:如果您真的要繪製,您的繪圖將出現在錯誤的地方並且太大。另外,'CGContextAddRect'不會給你任何圓角。拋出'AddRect',翻譯和縮放;在CGPath對象中繪製路徑,*然後* gsave,添加路徑,設置陰影和筆畫,然後grestore,重新添加路徑,剪輯和繪製圖像。 –