我是新來的客觀C. 我想畫(到現在爲止的基本線)到位圖上,然後在屏幕上呈現Iphone的位圖。如何繪製位圖並使用Objective C將其粘貼到屏幕上?
以下是我試過的代碼,它表明我只是一個空白屏幕:
- (void)drawRect:(CGRect)rect
{
CGContextRef screen = UIGraphicsGetCurrentContext();
size_t width = rect.size.width;
size_t height = rect.size.height;
void *data = malloc(width*height*4);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef c = CGBitmapContextCreate(data, width, height, 8, width*4, colorSpace, kCGImageAlphaPremultipliedFirst);
CGFloat black[4] = {0.0f,0.0f,0.0f,1.0f}; // setting the color in CMYK format
CGContextSetStrokeColor(c, black);
CGContextBeginPath(c);
CGContextMoveToPoint(c, 5.0f, 5.0f);
CGContextAddLineToPoint(c, 50.0f, 50.0f);
CGContextAddLineToPoint(c, 100.0f, 60.0f);
CGContextMoveToPoint(c, 100.0f, 100.0f);
CGContextAddLineToPoint(c, 50.0f, 150.0f);
CGContextStrokePath(c);
CGImageRef img = CGBitmapContextCreateImage(c);
CFRelease(c);
free(data);
CGContextDrawImage(screen, rect, img);
CGContextFlush(screen);
CGContextFlush(c);
CFRelease(colorSpace);
CGImageRelease(img);
CFRelease(screen);
}
讓我知道,如果有人能指出一個類似的例子或建議改變我的代碼。
感謝您的幫助大家... 代碼工作,但並不如預期。
我修改了代碼如下:
CGContextSetRGBFillColor(screen, 1.0, 1.0, 1.0, 1.0); //code works without these 3 lines
CGContextFillRect(screen, rect);
CGContextDrawImage(screen, rect, img);
但有一些奇怪的事情發生,我可以看到當我提供的顏色是綠色的黑線繪製。 下面是創建位圖上下文之後代碼:
CGFloat black[4] = {0.0f,1.0f,0.0f,1.0f}; //RGB values
CGContextSetStrokeColor(c, black);
這似乎是它的代碼工作的唯一組合...
沒有人有任何線索?
嗨Quixoto, 我能夠通過使用UIGraphicsGetCurrentContext只畫,但我希望做一個位圖並對其進行渲染。 默認背景是白色,我可以看到一個空白的白色屏幕,所以我相信我不需要在整個上下文中做一個矩形填充。我想代碼: 我認爲代碼: CGImageRef img = CGBitmapContextCreateImage(c); 應該得到CGImageRef img上下文c上的圖紙,但我想這就是什麼沒有發生。 謝謝 – R3D3vil 2011-03-31 15:21:45
你知道任何其他方式或有一個iphone位圖繪製的例子嗎? – R3D3vil 2011-03-31 15:40:28
@Nisarg:請參閱我的所有評論。你的方法應該沒問題,但還有其他一些考慮因素。除非清除/填充它,否則您的位圖上下文是垃圾數據。別的東西可能會導致你看不到。 – 2011-03-31 15:53:24