Form(のPictureBox1)上に、複数の図形を描いて、各々をドラッグして
自由に移動させたいのですが、どのようにすればよいのでしょうか?
VB6だったら、Shapeコントロールがありますから、Shapeに対するマウス
イベントでドラッグする処理が出来るとおもうのですが、
.NETだと例えば↓のように描いてしまうと
Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)
g.FillRectangle(sb, 100, 100, 200, 200)
描いた図形をオブジェクトとして捕らえて、マウスでドラッグできないと思います。
簡単な例でよろしいので、.NET上で作成した図形(例えば円)を
任意の位置までマウスでドラッグするための方法をお教えください
消して(マウスの位置に)描けばいいだけでは?
図形が1つならば、それでも問題が無いように思います。
しかし、複数個図形が散らばっている場合、その中の一つの図形をマウスで選択しているのかを判断できるものなのでしょうか? (複雑な条件文を書かなければならないような気もします)
よろしければ、この部分に対してもフォローして頂けると助かります。
ドラッグするのでは?
マウスクリックした位置にあった図形を対象とするだけでは?
他の図形は座標を覚えておいて前と同じ位置に描くだけだと
思いますが。
回答ではありませんが、VB6のShapeコントロールにもイベントがありませんので簡単にはできません
色々聞いて回りましたが、自分でコントロールを作るしかないとの話を受けました。
>特攻隊長さま
その方法は最初に考えたのですが、円の中をクリックしたかの判定をするのは処理が重たくなるのかなぁと感じた次第です。円が1000個とかになると判定する回数が多くなってしまうのかなぁと…。
>通ってみたさま
VB6でも、簡単にはできないのですか…。Borland系とは全く違うので戸惑い中です。
>円の中をクリックしたかの判定をするのは処理が重たくなるのかなぁと感じた次第です。
1000個判定してどのくらいの時間が掛かったのですか?
MouseMoveやOnpaintイベントを組み合わせれば出来ますね。
Delphiでは円状のコントロール(Delphiコンポーネント)を利用したのですが
作り方が全く違うわけですか。
でも、VBやVCの作り方の方がある種 正しいのかもしれません。
>特攻さま
仮定の話なので、1000個はやった事ないです。
円なら円内をクリックしたか判定条件書くのも楽ですが、
星型形状とかになると図形の内側外側を判定する条件文を
記述するのが大変になってきそうですね
結局、良いサンプルを見つけました。
http://www.shoeisha.com/mag/windev/library/870511.asp
ツイート | ![]() |