2009-08-18 36 views

回答

1

如何使用核芯顯卡爲...繪製固定寬度(比如,10個像素的直徑)的簡單點,並有一定的顏色[?]

  1. Set the fill color.
  2. Move to the point.
  3. Plot an arc,以該點爲中心,具有期望的半徑,給出開始角度0和結束角度2 * M_PI
  4. Close the path.
  5. Fill.

...畫的實例化的UIImageView內(無類文件重寫的drawRect有 - 只是一個參考實例)

我知道,在Mac,這真的不是一個好主意,因爲如果有任何事情把它設置爲需要顯示(或者直接告訴它顯示),NSView可能會隨時重畫,然後會打斷你繪製的任何東西。沒有關於iPhone的想法,但我注意到UIView沒有像NSView的lockFocusunlockFocus這樣的方法。

有一個更多的架構原因不這樣做:繪圖是視圖的專屬領域,並且您打算打破這種排他性,並在(我假設)控制器中撒上一些繪圖代碼。在沒有這種目的的對象中散佈代碼是一種混亂,不可導航的代碼的路徑。

更好地使一個子視圖每個點和新增爲圖像視圖的子視圖,或子類的UIImageView,給你的那個實例子類點的陣列來繪製,而之前有子類的drawRect:召集到super吸取它的觀點。

然後,上述解決方案進入drawRect:

1

您也可以將核心動畫層添加到視圖中。將拐角半徑設置爲您想要的點的大小的一半(假設爲正方形),並將渲染爲圓形。例如:

CALayer *layer = [CALayer layer]; 
[layer setBounds:CGRectMake(0.0f, 0.0f, 10.0f, 1.0f)]; 
[layer setCornerRadius:5.0f]; 
[layer setMasksToBounds:YES]; 
[layer setBackgroundColor:[[UIColor redColor] CGColor]]; 

// Center the layer in the view. 
[layer setPosition:CGPointMake([view bounds].size.width/2, 
          [view bounds].size.height/2)]; 

// Add the layer to your view 
[[view layer] addSublayer:layer]; 

確切地說不是核心圖形,但它很容易實現。

最好的問候,