2011-11-10 3 views
0

私はペイントアプリケーションを作成しています。ユーザーは、ペイントまたは編集後にすべてのオブジェクトを移動できる必要があります。私はブラシを持っていて、ツールを消去するので、ブラシで描かれたオブジェクトのすべてまたは一部を消去することができます。だから私はGraphicsPathから作られたSystem.Drawing.Regionを保持するオブジェクトDrawBrushを作った。System.Drawing.Region resizing

しかし、私はそれをどのようにサイズするのか分かりません。私はマウスの動きで別々の方向にサイズを変更する必要があります(たとえば、左に限定)

誰かが私を助けることができますか?

私は、このオブジェクト(移動)して何かをすることができるよ、ないサイズ...

+0

私はあなたの質問で混乱しています。マウスでオブジェクトをドラッグしたり、マウスでストレッチしたり、ビュー全体をスクロールしたりできますか? – Justin

+0

はい、まさに私はすべてをやることはできますが、伸ばすことはできません... – MadMaxx

+0

この情報であなたの質問を更新してください。それはあなたの質問の重要な側面です。 – Marijn

答えて

2

領域がフェンスのようなものです - それは単に領域の境界をマークします。グラフィックを「含む」わけではないので、領域のサイズを変更すると直接的/目に見える効果はありません。

ビットマップイメージの一部をエディタ内で移動またはサイズ変更できるようにするには、メインイメージの一部をリージョンのビットマップにコピーする必要があります。その後、テンポラリービットマップを(別の場所やサイズで)メインイメージに戻すことができます。

ペイントプログラムで複数のオブジェクトを描画し、後で別々に(移動してサイズを変更して)個別にビットマップオブジェクトとコンポジットに保存する必要がある場合は最終的な画像を画面に表示するか、フラットビットマップ形式で保存します。このようにすべての図形を個別に保持しないと、あまりにも多くの情報が失われ、後で編集することはできなくなります。

これを行うためのコードを書く前に、エディタの設計について考える必要があります。何をする必要があり、どのように達成するのですか?あなたの "文書"はどのように記述されますか? (1つのビットマップ?多くの小さなビットマップが異なる場所に描画されますか?ベクトルパスですか?)ドキュメントを表現する方法を理解する前にコードを書くと、コーナーにペイントしてしまう可能性があります(いたずらについて申し訳ありません)。

+0

私は選択されたcollorで満たされた領域で新しい透明なビットマップを作成し、ビットマップを変換する必要がありますか? – MadMaxx

+0

おそらく。 (私はあなたがしようとしていることを完全には分かっていないので、最良のアプローチを提案するのは難しい)。このようなビットマップにレンダリングしてサイズを変更することができます。しかし、あなたがやっているのは、GraphicsPathに色を塗りつぶしているだけなら、あなたのパス上の点の位置を単純に拡大縮小し、それを直接再描画することができます。これは、すべてのポイントの新しい位置を計算するか、パスを描画するために使用している変換行列を変更して、必要なスケーリング/変換を適用することによって実行できます。これは一度理解すれば簡単なテクニックですが、急な学習曲線になる可能性があります。 –

+0

あなたの助言に感謝しますが、今度はグラフィックパスについては気にしません。塗装された図面の任意の部分を消去したいときは、塗装された領域から新しい塗装(消しゴム)地域... GraphicPath「マイナス」GraphicPathを実行できますか?次に、GraphicPathのサイズを変更してから領域として再描画することができます。 – MadMaxx

関連する問題