|
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 日]
|