gpt4 book ai didi

objective-c - 将 drawAtPoint 与我的 CIImage 结合使用,不会在屏幕上执行任何操作

转载 作者:行者123 更新时间:2023-12-03 18:05:17 26 4
gpt4 key购买 nike

又卡住了。 :(当我单击应用程序主窗口上的按钮时,我将以下代码塞入调用的过程中。我只是想调整 CIIMage 然后显示结果。在这一点上,我什至不担心到底在哪里/如何显示它。我只是想把它关在 window 上以确保我的变换有效。这段代码似乎是通过drawAtPoint消息向下工作的。但我从来没有在屏幕上看到任何东西。怎么了?谢谢。

此外,就将其显示在窗口上的特定位置而言......是将某种框架放置在窗口上,然后获取该框架的坐标并“绘制到”该矩形中的最佳技术?或者使用 IB 的特定控件?或者是什么?再次感谢。

// earlier I initialize a NSImage from JPG file on disk.  
// then create NSBitmapImageRep from the NSImage. This all works fine.
// then ...
CIImage * inputCIimage = [[CIImage alloc] initWithBitmapImageRep:inputBitmap];
if (inputCIimage == Nil)
NSLog(@"could not create CI Image");
else {
NSLog (@"CI Image created. working on transform");
CIFilter *transform = [CIFilter filterWithName:@"CIAffineTransform"];
[transform setDefaults];
[transform setValue:inputCIimage forKey:@"inputImage"];
NSAffineTransform *affineTransform = [NSAffineTransform transform];
[affineTransform rotateByDegrees:3];
[transform setValue:affineTransform forKey:@"inputTransform"];
CIImage * myResult = [transform valueForKey:@"outputImage"];
if (myResult == Nil)
NSLog(@"Transformation failed");
else {
NSLog(@"Created transformation successfully ... now render it");

[myResult drawAtPoint: NSMakePoint ( 0,0 )
fromRect: NSMakeRect ( 0,0,128,128 )
operation: NSCompositeSourceOver
fraction: 1.0]; //100% opaque
[inputCIimage release];
}
}

编辑#1:

snip - removed the prior code sample mentioned below (in the comments about drawRect), which did not work

编辑#2:添加一些确实有效的代码,以供将来可能遇到同样问题的其他人使用。不确定这是否是最好的方法......但它确实适合我的快速和肮脏的目的。因此,这个新代码(如下)替换了上面/我最初的问题中的整个 [myResult drawAtPoint ...] 消息。此代码获取 CIImage 转换创建的图像并将其显示在 NSImageView 控件中。

NSImage *outputImage;
NSCIImageRep *ir;
ir = [NSCIImageRep imageRepWithCIImage:myResult];
outputImage = [[[NSImage alloc] initWithSize: NSMakeSize(inputImage.size.width, inputImage.size.height)] autorelease];
[outputImage addRepresentation:ir];
[outputImageView setImage: outputImage]; //outputImageView is an NSImageView control on my application's main window

最佳答案

在 Cocoa 中的屏幕上绘图通常发生在 -[NSView drawRect:] 覆盖内。我认为您没有这样做,因此您没有正确设置图形上下文。

关于objective-c - 将 drawAtPoint 与我的 CIImage 结合使用,不会在屏幕上执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993672/

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