- ベストアンサー
丸いボタンを作りたいが…
VBに限らず、ほとんどのAPはボタンが四角い表示になっています。それを、丸型のボタンにしたいのですが、ご存知の方がおられたら、表示する方法をご教授していただきたいのですが(ボタンそのものを、丸型にしたい…)。 ちなみに、APIを使用してウィンドウ(フォーム)を丸型(厳密には楕円)にすることが出来たのですが、ボタンは出来ませんでした。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
イメージコントロールで作りましょう。 古くからのゲームなどでは、イメージコントロールを使ってボタンを作っています。 以下の方法は、円くない変な形をしたボタンを作ろうと思ったときの改造が面倒で、ファイルサイズもでかくなりますが、円いなら比較的簡単です。 透明色が使えるGIFかアイコンで、ボタンを押していないときと押しているときの絵を作ります。(別に使うユーザーのフォームの色に対応しないというなら、透明色でなく固定色でもかまいませんが) 例 -------------------------------------------------- Image2に押していないときの分、Image3に押しているときの分を貼り付けたとして、Image1をボタンにしたいとき、 Dim ButtonFlag As Boolean Private Function IsInImage(ByVal X As Single, Y As Single) As Boolean '以下の定数は楕円の大きさによって変えてください IsInImage = (X ^ 2 / 9 + Y ^ 2 / 16 <= 129600) End Function Private Sub Form_Load() Set Image1.Picture = Image2.Picture End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If (Button = vbLeftButton) And IsInImage(X, Y) Then Set Image1.Picture = Image3.Picture ButtonFlag = True End If End Sub Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Set Image1.Picture = Image2.Picture If ButtonFlag Then 'クリックイベントを記述してください End If ButtonFlag = False End Sub -------------------------------------------------- 長くてごめんなさい。
その他の回答 (3)
- haporun
- ベストアンサー率40% (230/562)
ごめんなさい。 ちょっと間違えました。 下のほうを↓に修正してください。 Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Set Image1.Picture = Image2.Picture If ButtonFlag And IsInImage(X, Y) Then 'クリックイベントを記述してください End If ButtonFlag = False End Sub
- mfuku
- ベストアンサー率50% (173/345)
コムラッド社から、 「ボタンデザイナー Ver.1.0」 というActiveXコントロールが出てます。 それを使えば、ボタンの外観は自由にデザインできます。 一応ご参考までに。
私自身も素人なのではっきりしたことは言えませんが、API関数を使っても実現はしないと思います。 実現方法は2つ考えられます。1つは市販のActiveXコントロールで丸いボタンを購入すること。もう1つは自力でCOMコンポーネントを構築することです。但し、後者については通常C/C++などのツールを使うのが一般的でしょう。なぜならVB自体はRADツールという特性をもつからです。 VBとは「少ない知識と技術でまあまあのものいい加減にしかも早く作ることができるツールである」と理解しましょう。