2011-01-18 7 views
0

ラベルをデザインするアプリケーションがあり、それをプリンタに送信するデザインからイメージを作成します。イメージはTCP/IP経由で送信される前にバイトストリームになります。フレームと一緒に点を回転させるためのアルゴリズム(比較的)

短い説明では、ラベル上のさまざまな要素の位置を自動的に計算するローテーション設定があります。そして、それは正しく動作していません。

私は、含まれている矩形の高さ/幅(ラベルサイズ)に対する要素の位置を計算する簡単な方法があるのだろうかと思っていました。これはビットマップなので、左上隅が(0,0)であることも考慮する必要があります。これは、私が見つけたローテーションアルゴリズムのほとんどが通常のX/Y軸で動作するため、私を混乱させる原因です。

だから、ポイント(テキストボックス)が100,100(左上隅)のラベル500 x 300(幅x高さ)があるとします。これを90度回転させて、ラベルが300 x 500になり、テキストボックスが200 x 100(右上)になるようにします。注意してください、矩形の計算は、それ自身を世話します、私はちょうど新しい辺に相対的な点を見つける必要があります。

私は180度見つかっ(幅 - X、高さ - y)を、ものの90(270)ためのアルゴリズムをスポッティング苦労し

ここに関与おそらくノーロケット手術が、私は、自分自身が盲目見つめてきましたこの問題。

答えて

1

時計回りのπ/ 2回転の場合、式は(hight - y, x)であることが簡単に分かります。あなたは一般的なπ/ 2回転式、(-y, x)からそれに到着することができます。 (「座標の原点」も変更されていると考える)

270度の計算式は非常に似ています。

0

ラベルを反時計回りに90度回転させたい場合、ラベルの各点(x、y)は(-y、x)に「マップ」します。 270度回転(または時計回りに90度回転する場合)(x、y)は(y、-x)になります。お役に立てれば。