0

私は、基本的に MFC の API を使用して画像に注釈を描画することに関連するアプリケーションに取り組んでいます。これらの注釈を描画するために必要な座標は、xml ファイルに保持されます。また、画像のズームレベルを変更する際の注釈のスケーリングも処理します。

問題は、座標をスケーリングすると、すぐに結果が倍精度または浮動小数点になることですが、結果を整数として保存するため、多くのエラー/偏差が発生します。

座標を float として xml に保存し、float で即時操作を実行するのは良いことでしょうか?

最後に、長い必要がある LineTo()、MoveTo() などの API で使用するために整数に変換します。

これに関する提案やアドバイスは非常に役立ちます。

ありがとう

4

2 に答える 2

0

座標を xml にシリアル化するときはreinterpret_cast<int>、 float と同じバイナリ表現を持つ整数として座標を単純に保存するために使用できます。逆に、デシリアライゼーション中にreinterpret_cast<float>、元の番号を回復するために使用します。この方法で保存/読み込みの精度を失うべきではありません。

エラーに関する限り、解決策は簡単です。整数として保存しないでください。float を保持し (PhoenixX_2 の double へのアップグレードの提案にも賛成します)、描画中にそれらを一時的な int 変数にキャストします。

編集: float の代わりに double を使用することにした場合、double は 32 ビットではなく 64 ビットであるため、シリアル化中にそれを考慮する必要があることに注意してください。数値を人間が読める 10 進数として保存することもできます。これはおそらく最も明白な方法です。

于 2013-08-26T14:46:47.570 に答える