2014-01-14 96 views
3

我使用核心顯卡與修改執行本SO answer核芯顯卡圓形圖像模糊

這裏畫一個圓圈形象是我的源:

+ (UIImage*)circularImageWithRadius:(CGFloat)radius color:(UIColor*)color{ 
    CGRect rect = CGRectMake(0.0f, 0.0f, radius*2, radius*2); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, color.CGColor); 
    CGContextFillEllipseInRect(context, rect); 
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 

的邊緣模糊,我不知道爲什麼(我認爲它與設備的分辨率無關,它可以直接使用)。

我試着用CGContextFillRect(context, rect);代替CGContextFillEllipseInRect(context, rect);,那也太模糊了。然後,我嘗試CGContextFillRect(context, CGRectMake(0, 0, radius*4, radius*4),它完美,清晰的形象和一切(雖然是一個正方形,而不是一個圓圈)。所以我改回CGContextDrawEllipseInRect(context, CGRectMake(0, 0, radius*4, radius*4)但是這是我的結果:

enter image description here

,而用矩形,它是使用尺寸半徑* 2時,但具有更清晰的圖像相同。

我該如何解決我的模糊問題,爲什麼CGContextFillEllipseInRect不能填充預定義的圖像矩形?

回答

9

我覺得在發佈後立即發現了這個,但this answer指出了方向。

我只是說

if(UIGraphicsBeginImageContextWithOptions != NULL) { 
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0); 
} else { 
    UIGraphicsBeginImageContext(rect.size); 
} 

,而不是僅僅UIGraphicsBeginImageContext(rect.size);到我的原始來源,它的清澈和銳利。

+0

我也有這個問題。解決方法是將刻度設置爲0.0,從而將圖像繪製到設備的比例尺上。原始UIGraphicsBeginImageContext將不透明設置爲NO,默認縮放至1.0。我指出了這一點,因爲我原本以爲該修復與將不透明設置爲NO有關。 – Gandalf458