高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1189
Problems recording CopyBits into a PICT on Mac OS X 10.2


Q: Mac OS X 10.2 で、同じウインドウポートでコピーをすると、CopyBits(portBitsPtr, portBitsPtr, &srcRect, &dstRect, srcCopy, NULL) が PICT に記録されないのはなぜでしょうか?

A: これは 10.2 の既知のバグ (r. 3017823) であり、次のような場合に CopyBits の呼び出しは PICT に記録されません:

  • コピー元とコピー先が同一のウインドウポートの場合
  • コピー元とコピー先の矩形のサイズが同じ場合
  • srcCopy blit モードの場合
  • マスクリージョンが NULL の場合

このバグは 10.2.2 以降では修正されていますが、10.2 と 10.2.1 については、最も簡単な対処方法として、RectRgn を使用して dstRect の外に矩形リージョンを作成し、これを最後のパラメタとして渡します。




    RgnHandle dstRectRgn;
    dstRectRgn = NewRgn();
    if (dstRectRgn != NULL) {
        RectRgn(dstRectRgn, &dstRect);
        CopyBits(portBitsPtr, portBitsPtr, &srcRect, &dstRect, srcCopy, dstRectRgn);
        DisposeRgn(dstRectRgn);
    }



RectRgn CopyBits は両方とも「QuickDraw.h」ファイルで定義されており、『Inside Macintosh: Imaging with QuickDraw』で説明されています。


[2002 年 8 月 14 日]