2
A
回答
3
舍入UIImage會產生另一個UIImage。
如果您創建一個CGContext以與原始圖像大小相同的方式進行渲染,然後添加一個帶圓角的剪裁路徑並呈現原始UIImage,則可以執行此操作。
然後,您可以將UIImage拉出CGContext。
另一種選擇是避免中間步驟,就是在你的上下文繪圖中推送圖形狀態,添加圓形路徑作爲剪切路徑,繪製圖像然後彈出圖形狀態返回到此處。
你可以看到TweetStation如何使用這爲它的玻璃按鈕:
2
在MonoTouch(和iOS本身)中,它不是您可以在UIImage
本身上執行的操作。但是,您可以通過操縱其Layer
屬性在UIImageView
上執行此操作。
看到這個answer爲一個Objective-C的例子,很容易轉換爲C#。
1
我還建議你在introduction-to-calayers-tutorial以下教程。它涵蓋了iOS中定製圖層的有趣內容。
希望它有幫助。
3
這裏是MonoTouch的用戶尋找一個快速的輔助函數一個漂亮的代碼幫手。 Tweeked代碼來自於優秀的Xamarin.com網站:
public static UIImage RounderCorners (UIImage image, float width, float radius)
{
UIGraphics.BeginImageContext (new SizeF (width, width));
var c = UIGraphics.GetCurrentContext();
//Note: You need to write the Device.IsRetina code yourself
radius = Device.IsRetina ? radius * 2 : radius;
c.BeginPath();
c.MoveTo (width, width/2);
c.AddArcToPoint (width, width, width/2, width, radius);
c.AddArcToPoint (0, width, 0, width/2, radius);
c.AddArcToPoint (0, 0, width/2, 0, radius);
c.AddArcToPoint (width, 0, width, width/2, radius);
c.ClosePath();
c.Clip();
image.Draw (new PointF (0, 0));
var converted = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return converted;
}
0
基於BahaiResearch.com答案我做了對非方形圖像的另一種方法和圓度百分比,而不是字面半徑。
我不確定它是否會正確生成省略號。所以我會很感激,如果有人可以測試甚至改進這種方法。
private static UIImage RoundCorners (UIImage image, float roundnessPercentage)
{
float width = image.Size.Width;
float height = image.Size.Height;
float radius = ((width+height)/2) * (roundnessPercentage/(100*2));
UIGraphics.BeginImageContext (new SizeF (width, height));
CGContext c = UIGraphics.GetCurrentContext();
c.BeginPath();
c.MoveTo(width, height/2);
//Bottom-right Corner
c.AddArcToPoint(width, height, height/2, width, radius);
//Bottom-left Corner
c.AddArcToPoint(0, height, 0, 0, radius);
//Top-left Corner
c.AddArcToPoint(0, 0, width/2, 0, radius);
//Top-right Corner
c.AddArcToPoint(width, 0, width, height/2, radius);
c.ClosePath();
c.Clip();
image.Draw (new PointF (0, 0));
UIImage converted = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return converted;
}
相關問題
- 1. Python中的便捷方法
- 2. UIImage按鈕(圓形按鈕)
- 3. 圍繞UIImage放置圓形框架的最簡單方法
- 4. 動畫UIImage快捷方式?
- 5. 從原始UIImage中裁剪圓形或橢圓形圖像
- 6. 如何裁剪橢圓形或圓形UIImage?
- 7. 元編程Ruby便捷方法
- 8. 什麼是Java中的便捷方法?
- 9. 紅寶石記錄便捷方法
- 10. 的UIImage與左側的MonoTouch iPhone圓潤的邊角
- 11. UIImage圓角
- 12. 一種圓形的方法浮動圓形下移
- 13. 旋轉的UIImage的MonoTouch
- 14. MonoTouch的序列化的UIImage
- 15. 在MonoTouch中壓縮UIImage
- 16. UIImage ImageNamed方法
- 17. 圓形單鏈表刪除方法
- 18. 圓形pandas.DataFrame的正確方法?
- 19. 圓形方法在分數類
- 20. 圓形內部方法調用
- 21. 旋轉一個圓形的方形,在圓頂上有圓點
- 22. 在matlab中選擇一個ROI(圓形和方形)以便通過濾波器
- 23. CSS或jQuery/JavaScript橢圓形/圓形方形進度條
- 24. VALA:獲取屬性的便捷方式
- 25. 獲取用戶名的便捷方式
- 26. 圓半便士?
- 27. 便捷方法vs初始化方法的內存使用情況
- 28. 爲什麼我應該使用便捷方法保留?
- 29. 目標C和便捷方法中的自動釋放
- 30. 查找變量聲明的便捷方法
好的!但在圖片大小調整時失敗......任何想法? – cvsguimaraes
我改進了你的方法... – cvsguimaraes