我的博客在此之前已經被提及作爲對問題的回答。我無法鏈接到其中的一個,因爲此表單聲稱我是垃圾郵件發送者。嘆。無論如何,現在我想寫一個關於繪製旋轉文本的權威博客文章,所以它也可以用於這裏的答案(heh)。這是我第一次嘗試:如何繪製旋轉文字而不限於MacRoman字符集?
http://www.platinumball.net/blog/2009/06/01/drawing-nsstrings-in-unusual-rotations/
行之有效,但它確實我想要的一切,除了爲它使用CGContextSelectFont事實(),這限制文本輸出爲macroman。那是Teh Sukk。
我一直在尋找這個問題近一年的答案,包括幾次搜索這個網站,沒有成功。我見過的例子看起來與我想要的很接近,但顯然我太愚蠢了,不能將它們屈服於我的意願。我包含了我寫的NSString類的主要方法,它顯示了我正在做的事情的膽量。如果您需要查看代碼的其餘部分,可以從鏈接下載到我上面給出的博客。謝謝...後
-(void)drawAtPoint:(CGPoint)point withFont:(UIFont*)font
orientation:(WBOrientation)orient
{
CGContextRef ctxt = [self contextSave];
const std::string tbuf = toStdString(self, NSMacOSRomanStringEncoding);
CGAffineTransform tran = CGAffineTransformMake(1, 0, 0, -1, 0, 0);
switch (orient)
{
case WBOrientUp:
// nothing to do
break;
case WBOrientDown:
tran = CGAffineTransformRotate(tran, degreesToRadians(180.0));
break;
case WBOrientLeft:
tran = CGAffineTransformRotate(tran, degreesToRadians(90.0));
break;
case WBOrientRight:
tran = CGAffineTransformRotate(tran, degreesToRadians(-90.0));
break;
default:
assert(false);
break;
}
contextFont(ctxt, font);
CGContextSetTextDrawingMode(ctxt, kCGTextFill);
CGContextSetTextMatrix(ctxt, tran);
CGContextSetTextPosition(ctxt, point.x, point.y);
CGContextShowText(ctxt, tbuf.c_str(), tbuf.length());
[self contextRestore:ctxt];
}
Allen:刪除了您的博客文章。你說你需要'const char *'s並且很難得到它們。 NSString有一個'-cStringUsingEncoding:'方法,它似乎直接執行你所需要的操作(參見圍繞它的內存管理文檔)。只是FYI。 – 2010-01-29 17:07:07