0
CoreGraphics相當新穎,但卻掌握了基礎知識。試圖寫入外部文件(而不是電話的屏幕)。所有網格出現,但不會使用drawAtPoint呈現文本。無論我嘗試什麼,只是不做!文本不會出現在外部位圖/ jpeg文件中。 Drawatpoint在當前上下文中不起作用?
這裏是我的代碼,它發射時的viewDidLoad:
- (void)viewDidLoad {
CGFloat width = 312;
CGFloat height = 482;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
size_t bitsPerComponent = 8;
size_t bytesPerPixel = 4;
size_t bytesPerRow = (width * bitsPerComponent * bytesPerPixel + 7)/8;
size_t dataSize = bytesPerRow * height;
unsigned char *data = malloc(dataSize);
memset(data, 0, dataSize);
CGContextRef context = CGBitmapContextCreate(data, width, height,
bitsPerComponent,
bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
// Flip coordinate system
CGRect bounds = CGContextGetClipBoundingBox(context);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, -bounds.size.height);
// And now the magic happens...
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, CGRectMake(0,0,312,482));
int tableTop=54;
int cellsPerColumn=26;
int cellHeight=15;
[@"Title" drawAtPoint:CGPointMake(8, 8) withFont:[UIFont boldSystemFontOfSize:9.0f]]; // Doesn't print text on screen?!
for(int a=1;a<cellsPerColumn+1;a++)
{
CGContextStrokeRect(context, CGRectMake(8,(tableTop+cellHeight*(a+1)),60,cellHeight));
CGContextStrokeRect(context, CGRectMake(66,(tableTop+cellHeight*(a+1)),85,cellHeight));
CGContextStrokeRect(context, CGRectMake(159,(tableTop+cellHeight*(a+1)),60,cellHeight));
CGContextStrokeRect(context, CGRectMake(217,(tableTop+cellHeight*(a+1)),85,cellHeight));
}
// Wrap up context and produce the image...
CGColorSpaceRelease(colorSpace);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *result = [[UIImage imageWithCGImage:imageRef] retain];
CGImageRelease(imageRef);
CGContextRelease(context);
free(data);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"user_images/myImage.jpg"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(result)];
[imageData writeToFile:filePath atomically:YES];
[super viewDidLoad];
}
我撕我的頭髮就這一個,它有這樣的東西有關設置與上下文來渲染文本或簡單的東西像那樣。任何幫助非常感謝!
感謝, 豐富
好的,謝謝你的回答,但讓我想,也許我會這樣做的所有錯誤的方式。 我試圖使用NS實用程序命令(如drawAtPoint)在手機上生成圖像以包含繪圖對象,圖像和文本。這個文件的尺寸超出了屏幕的範圍,文件需要以編程方式和幕後製作,因此用戶不需要看到它。我也想控制結果圖像的分辨率(pref 300dpi)。 必須有一個簡單的方法來做到這一點?任何幫助不勝感激。 Regards, Rich –