- PR -

Visioのコネクタ

投稿者投稿内容
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-04-09 09:49
こんにちわ
Visioのコネクタのようなコントロール(たぶんコントロールでできているのではないかと思うのですが)をVB.NETで作りたいのですが、サンプルになるようなものがありません。
(UML作成ツールなど、完成したものはフリーソフトでよく見かけるのですが)
どこかに参考になるようなサンプルコードってないでしょうか?
大雑把な質問ですいません。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-04-09 11:03
回答じゃなくて逆質問なんですが

最近VS.netから遠ざかってるんですが、昔調べた限りだと、
コネクタ以前に、ただの線や四角形でも難しいと思うのですが。
最近は、そんなコントロールがあるんですか?

デザイン時ではなくて、実行時にユーザが操作するんですよね?

# VS6時代ですが、「そんなもの作れるかっ」ってことで、Excelを
# OLEで埋め込んでお茶を濁したことあり
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-04-09 12:54
こんにちわ
そういうコントロールそのものは無いので、自作しないといけないのですが、
できるものなのかどうかも・・・。
フリーソフトであるUML製図ツール等はC++やJAVAで作ってあるみたいですが・・・。
コネクタのように動作させる以前に、コントロールの形を四角ではなく線や丸の形にすることすら、方法がわからないのですが。
あと、コントロールが重なった場合は背景を透過にできなかったり・・・。
困りました。
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-04-09 13:48
VisioをSpyでみると1つ1つのオブジェクトはウィンドウハンドルを持っていないので、ここで云っているコントロールの概念には当てはまらないようです。もしVisioのようなやり方をとるのであれば、自分でガリガリ描画しなくてはいけないですね。.NETにおけるグラフィック機能はGDI+に収められていますので、MSDN等を参照してみてください。

また、もしウィンドウハンドルを持ったコントロールでというのであれば、ウィンドウを四角形以外にするにはリージョンやパスという概念を適用する必要があります。こちらも詳しくはMSDN等を参考にしてみてください。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-04-09 14:00
Visioのコネクタではないですが、
電子回路のコネクタならこの辺で学べます。
http://www.staticfreesoft.com/
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-04-09 14:55
こんにちわ
Visioはコントロールでやってないのですか。
それじゃぁどうやってボックスやコネクタをクリックしたら動かせられるようにしているのやら・・・。

コントロールを四角以外にするにはリージョンやパスを使って・・・ですか。
MSDNで文字の形をしたボタンを作るサンプルというのは見たことがあるのですが、
GDI+で描いた図形や線をボタンにする方法はよくわかりませんでした。
ズバリなサンプルコードがないとできない、スキル無さすぎの私です。

電子回路のページ見ました。英語の所々にC/C++やJAVAの文字が・・・・敷居が高そうです・・・。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-04-10 00:36
こんな感じでやっているのでは?という着想だけ。

引用:

ひろこさんの書き込み (2004-04-09 14:55) より:
こんにちわ
Visioはコントロールでやってないのですか。
それじゃぁどうやってボックスやコネクタをクリックしたら動かせられるようにしているのやら・・・。



そういうように各オブジェクトの情報(基準座標(X,Y,Z)、角度、大きさ、色、付属テキスト)
を自前で管理し、各オブジェクトの位置および重なり具合を判断して自前で
描画していると思います。(といってもこれは言うほど簡単ではないですけど)

また、その中からあるオブジェクトを選択するには、マウスでクリックした
座標を含むオブジェクトで最前面のオブジェクトは何か?を判定したり、
数学的な知識も必要です。オブジェクト数が多くなるとこの包含判定に
時間がかかってしまうので、ロジックもしっかり考えないといけないですね。

コネクタに関しても各オブジェクトには接続できるポイントの情報を
属性として持っていて、別のどのオブジェクトとつながっているか?
(あるいはつながっていない)の情報も同時に持っているのでしょう。

ある意味ではシューティングゲームのロジックと似た部分が多いですね。
(弾が敵にあたったか、弾があたったとき、敵同士が重なっていたら
どちらを倒したことにするか、たくさんの敵、および、自分の座標等の情報管理・・・、
コネクタはツインビーの協力攻撃と・・・)


[ メッセージ編集済み 編集者: よねKEN 編集日時 2004-04-10 00:39 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-04-10 12:56
Visioのようなコネクタのように高機能ではないですが
昔、帳票作成ソフトを作成したときは
よねKEN様のような方法で実現してました。
おそらくVisioのようなものを作成するには、かなりのスキルが必要です。
いきなり、そのようなサンプルを探そうとしないで
グラフィックの基礎から調べないと無理だと思います。

スキルアップ/キャリアアップ(JOB@IT)