0

以下のコードは次のとおりです。ここで何が間違っているのかわかりません。NIB ファイルからレイヤーをレンダリングしていたときに機能していました。プログラムでビューを作成して変更しようとしました。これでレイヤーがレンダリングされますが、変換は適用されません。

- (NSBitmapImageRep*)getCurrentFrame
{
  CGContextRef    bitmapContext = NULL;
  CGColorSpaceRef colorSpace;
  int bitmapByteCount;
  int bitmapBytesPerRow;

  int pixelsHigh = (int)[fixedWidthStringView bounds].size.height;
  int pixelsWide = (int)[fixedWidthStringView bounds].size.width;

  bitmapBytesPerRow   = (pixelsWide * 4);
  bitmapByteCount     = (bitmapBytesPerRow * pixelsHigh);

  colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);

  bitmapContext = CGBitmapContextCreate (NULL,
                                       pixelsWide,
                                       pixelsHigh,
                                       8,
                                       bitmapBytesPerRow,
                                       colorSpace,
                                       kCGImageAlphaPremultipliedLast);
  if (bitmapContext== NULL)
  {
        NSLog(@"Failed to create bitmapContext.");
        return nil;
  }

  CGColorSpaceRelease( colorSpace );


  [CATransaction setDisableActions:YES];
  fixedWidthStringView.layer.transform = CATransform3DScale(fixedWidthStringView.layer.transform, .5, 1, 1);
  [CATransaction commit];

  [fixedWidthStringView.layer renderInContext:bitmapContext];

  CGImageRef img = CGBitmapContextCreateImage(bitmapContext);
  NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCGImage:img];
  CFRelease(img);

  return bitmap;

}
4

1 に答える 1

0

自分で修正しました。NSView を別の NSView に追加してコンテナーをレンダリングする限り、これは機能することがわかりました。

于 2012-06-22T23:02:46.517 に答える