gpt4 book ai didi

cocoa - 用CGImage绘制图像?

转载 作者:行者123 更新时间:2023-12-03 16:13:53 25 4
gpt4 key购买 nike

我有一个 CGImageRef,我想将其显示在 NSView 上。我已经有一个来自源路径的 CGImageRef 但以下内容不起作用:

- (void)drawRect:(NSRect)rect {

NSString * thePath = [[NSBundle mainBundle] pathForResource: @"blue_pict"
ofType: @"jpg"];
NSLog(@"the path : %@", thePath);

CGImageRef myDrawnImage = [self createCGImageRefFromFile:thePath];

NSLog(@"get the context");
CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
if (context==nil) {
NSLog(@"context failed");
return;
}

//get the bitmap context
CGContextRef myContextRef = CreateARGBBitmapContext(myDrawnImage);

//set the rectangle
NSLog(@"get the size for imageRect");
size_t w = CGImageGetWidth(myDrawnImage);
size_t h = CGImageGetHeight(myDrawnImage);
CGRect imageRect = {{0,0}, {w,h}};
NSLog(@"W : %d", w);

myDrawnImage = CGBitmapContextCreateImage(myContextRef);

NSLog(@"now draw it");
CGContextDrawImage(context, imageRect, myDrawnImage);

char *bitmapData = CGBitmapContextGetData(myContextRef);

NSLog(@"and release it");
CGContextRelease(myContextRef);
if (bitmapData) free(bitmapData);
CGImageRelease(myDrawnImage);
}

这是怎么回事?

最佳答案

CGImageRef myDrawnImage = [self createCGImageRefFromFile:thePath];

现在你有了你的图像。

CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext]     graphicsPort];

现在您已经有了 View 的上下文。您拥有绘制图像所需的一切。

CGContextRef myContextRef = CreateARGBBitmapContext(myDrawnImage);

等等,什么?

myDrawnImage = CGBitmapContextCreateImage(myContextRef);

好吧...现在您已经捕获了没有任何内容绘制的上下文的内容,通过用空白图像替换它来忘记(并泄漏)您加载的图像。

CGContextDrawImage(context, imageRect, myDrawnImage);

您绘制空白图像。

省去创建位图上下文和创建该上下文内容的图像的过程,只需绘制加载到 View 上下文中的图像即可。

或者使用 NSImage。那将是两行。

关于cocoa - 用CGImage绘制图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3424103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com