DCで画像を描画するためにC++GDI、StretchDIBitsを使用しています。
元の画像が大きいため、高品質が必要です。私はHAFTONEモードを使用して、DCに画像全体を描画する(画像をズームする)のに時間がかかるようです。
そこで、StretchDIBitsを使用して部分的に描画することにしました。しかし、StretchDIBitsには深刻な問題があります。
整数の長方形を整数の領域にのみ描画できます(幅と高さ、およびx、yの左上の点はすべて整数です)
::SetStretchBltMode(hdc, HALFTONE);
::StretchDIBits(hdc,
realDrawRect.left,
realDrawRect.top,
realDrawRect.right - realDrawRect.left,
realDrawRect.bottom - realDrawRect.top,
left,
top,
width,
height,
pImageDIB,
pImageHead,
DIB_RGB_COLORS, SRCCOPY);
の場合、画像は21*21です。私は今、(5、5、7、7)をDCに(20、20、60、60)で描いています。次に、(21、20、61、60)で描きたいと思っています。元の画像に対応する場所がありません。したがって、DCに近似直線を描くことしかできません。今問題が起こっている、画像が揺れている!
私はその問題に悩まされています。どうすれば揺れを防ぐことができますか?