2013-03-19 51 views
0

我試圖繪製的drawRect盒/路徑在我看來的一個路徑矩形是:CGContextTransalateCTM是如何工作的?

CGRect pathRect = CGRectMake(self.buttonSize_ + 25, commentYOffset, rect.size.width - 80, 40); 

而在此之前,我有:

CGContextSetTextMatrix(context, CGAffineTransformIdentity); 
     CGContextTranslateCTM(context, 0.0, rect.size.height); 
     CGContextScaleCTM(context, 1.0, -1.0); 

我想這條道路是從頂部繪製100像素,所以我所做的是將commentYOffset設置爲100,但是這並不能實現。我做錯了什麼,所以當我畫出這條路徑時,它從頂部100像素開始?

回答

0

CGContextTranslateCTM(context,…)將翻譯變換應用於上下文。在繪圖環境中的任何現有變換之後應用翻譯。在您發佈的代碼中,最後兩行有效地將您的繪圖環境中的垂直線翻轉過來。只要將它們排除在外,路徑將被繪製在你想要的地方。

編輯:硐說,他所需要的變換保留一些文本繪製右側起來,這樣:如果您需要翻轉垂直在你的圖上下文(如你正在做的),那麼只記得運用這些後變換zero-y位於矩形底部,正Y軸指向矩形頂部。因此,要繪製從頂部100個像素的路徑,您應該製作

commentYOffset = CGRectGetMaxY(rect) - 40.0 - 100.0; 

而那40是因爲你的矩形高40點。事實上,最好的做法是製作這些命名常量,這樣您就不必在未來的地方複製幻數。那麼你的代碼將是這個樣子:

commentYOffset = CGRectGetMaxY(rect) - kPathRectHeight - kPathTopMargin; 
+0

移除出來將導致拉動而倒掛的文字,這是不是我想要 – adit 2013-03-19 10:31:02

+0

@adit OK,我已經更新了我的回答給工作commentYOffset無刪除轉換。 – 2013-03-19 14:45:43