VB6.0のshapeオブジェクトと同じことを2005で実現するには?

解決


かものねぎ  2006-05-12 23:01:31  No: 131380

VB2005  Express, Windows XP

上記タイトルどおりです。
PSetとかGraphicメソッドなどを使用して実現できるのは知っているのですが、6.0でいうところのFrameのようなものを実現したいだけなので、上記ではちょっと大仰になってしまいます。

もっと簡単に実現する方法を誰かご存知でしたら是非ご教授お願いいたします。


特攻隊長まるるう  2006-05-12 23:26:50  No: 131381

>6.0でいうところのFrameのようなものを実現したいだけなので
なんで、質問は shape なのでしょう???
…普通に GroupBox なのでは?


かものねぎ  2006-05-13 02:10:19  No: 131382

説明不足ですみません。
GroupBoxのようなものを作りたいんですが、GroupBoxではちょっと無理なんですよね。
VB6.0の時はShapeを使って、適当線を引っ張って作ってたんですが・・・。
例えば、以下のようなものをフォームに作りたいんですが、コーディングするのが邪魔くさいので何かないかと。

−−○○グループ−−−−−−−−−−−−−
|●テキストボックス  |                |
|−−−−−−−−−−−−−−−−−−−−
|●テキストボックス  |●テキストボック|
|                    |                |
|                    |−−−−−−−−|
|                    |
|−−−−−−−−−−|

とまぁ要するにコーディングすることなく自由に線を引くことはできないのかと。
フォームのサイズも固定にしちゃってるので線が引ければそれでOKって状況なんですけど。
答えてくださったかたありがとうございます。
もしよろしければ、また気が向いたときに返信お願いいたします。


かものねぎ  2006-05-13 02:11:06  No: 131383

すみません。おもいっきり、ずれました(涙)
要点は罫線を自由に引きたいということでお願いします。


特攻隊長まるるう  2006-05-13 02:15:31  No: 131384

GroupBox の高さを 8 ピクセルくらいにするとかして
罫線の数だけ GroupBox を貼り付ければできるよね?


かものねぎ  2006-05-13 02:44:49  No: 131385

レスありがとうございました。
それは考えたんですが、どうも引かれる線の色が指定されてしまう(つまり灰色しかできない)ということで躊躇してます。
やはり、横着せずにちゃんと正当な(?)方法で
やれってことですかね?^^;

特攻隊長まるるうさん丁寧かつ迅速なレスありがとうございました。
とりあえず、これで解決にさせていただきます。


特攻隊長まるるう  2006-05-13 04:06:19  No: 131386

自分で考えたことは先に公開した方が、それ以外のアイデアが出て
いいと思うんだけど、どうも質問者というものは情報を小出しにしたがる
らしい…

>それは考えたんですが、どうも引かれる線の色が指定されてしまう(つまり灰色しかできない)ということで躊躇してます。
PictureBox にするとか…でも線の形がフラットで…とか言い出すと
結局 Graphics 使うことになりそうですが…。
既存のコントロールでやるとどうしても無理が出てきそうですね。
ユーザコントロールを作ってみるとか…。
始点と終点を指定したら間に引く…うーん。オイラ一人だとこの辺が限界。
# そんなに早く閉じなくてもいいと思いますが。


かものねぎ  2006-05-13 10:24:01  No: 131387

>自分で考えたことは先に公開した方が、それ以外のアイデアが出て
いいと思うんだけど、どうも質問者というものは情報を小出しにしたがる
らしい…

他意はないと思いますよ、少なくとも私は。
気を悪くされたなら謝ります。
6.0のときはどちらかというと答えるほうが多かったのでどうも不慣れで・・・。
ユーザーコントロール・・・。
みなさん、どうされてるんでしょうかね?
需要があれば、すでにありそうな気もしますし、ないのであれば自分で作ってみるのも検討してみます♪


魔界の仮面弁士  2006-05-13 10:57:31  No: 131388

>罫線を自由に引きたい
私なら、直接描画してしまうかな?

>コントロール
中さんのとか。
http://naka.wankuma.com/site/library/dotnet1.1/Wankuma.WindowsForms.WankumaBox1d.htm
http://naka.wankuma.com/site/library/dotnet1.1/Wankuma.WindowsForms.WankumaLine1d.htm


特攻隊長まるるう  2006-05-18 20:00:49  No: 131389

>>罫線を自由に引きたい
>私なら、直接描画してしまうかな?
私もそうですねぇ。。。下手に考えるより直接書いたほうが早いし自由だから。
… Graphics がもともとその為のクラスだと思うし。。。

たくさん線が増えて、しかも変更が発生して面倒って場合は座標を変数で
指定したり。。。
[VB.NET]
    Private Sub SquareDraw_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim wColorPen As New Pen(Color.FromArgb(0, 255, 0), 1)
        Dim intX() As Integer = {20, 40}
        Dim intY() As Integer = {10, 100}
        With e.Graphics
            .DrawLine(wColorPen, New Point(intX(0), intY(0)), New Point(intX(0), intY(1)))
            .DrawLine(wColorPen, New Point(intX(0), intY(0)), New Point(intX(1), intY(0)))
            .DrawLine(wColorPen, New Point(intX(0), intY(1)), New Point(intX(1), intY(1)))
            .DrawLine(wColorPen, New Point(intX(1), intY(0)), New Point(intX(1), intY(1)))
        End With
    End Sub

中さんのコードのほうが機能的に良いと思うけど…自分で簡単に書くならこの程度で済むという例。
中さんのコードがVBの仕様に合わせて Width と Height という形式っぽかったのであえてXY座標指定。


かものねぎ  2006-05-19 07:11:50  No: 131390

特攻隊長まるるうさん、魔界の仮面弁士さん、ありがとうございました。
結局直接描画の方向で動きました。

.NETって6.0ユーザーからしたら目から鱗的な部分がものすごく多いのですが、個人的にはこの問題だけはやっぱりShapeを残して欲しかったですね〜。

あの、ペタペタ感が忘れられない(笑)

最後までお付き合いいただきありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加