-PR-
解決済み

丸いボタンを作りたいが…

  • 暇なときにでも
  • 質問No.6922
  • 閲覧数1584
  • ありがとう数5
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 7% (1/13)

VBに限らず、ほとんどのAPはボタンが四角い表示になっています。それを、丸型のボタンにしたいのですが、ご存知の方がおられたら、表示する方法をご教授していただきたいのですが(ボタンそのものを、丸型にしたい…)。
ちなみに、APIを使用してウィンドウ(フォーム)を丸型(厳密には楕円)にすることが出来たのですが、ボタンは出来ませんでした。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル12

ベストアンサー率 40% (230/562)

イメージコントロールで作りましょう。
古くからのゲームなどでは、イメージコントロールを使ってボタンを作っています。

以下の方法は、円くない変な形をしたボタンを作ろうと思ったときの改造が面倒で、ファイルサイズもでかくなりますが、円いなら比較的簡単です。

透明色が使える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
--------------------------------------------------


長くてごめんなさい。
関連するQ&A
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1

私自身も素人なのではっきりしたことは言えませんが、API関数を使っても実現はしないと思います。 実現方法は2つ考えられます。1つは市販のActiveXコントロールで丸いボタンを購入すること。もう1つは自力でCOMコンポーネントを構築することです。但し、後者については通常C/C++などのツールを使うのが一般的でしょう。なぜならVB自体はRADツールという特性をもつからです。 VBとは「少ない知識と技術で ...続きを読む
私自身も素人なのではっきりしたことは言えませんが、API関数を使っても実現はしないと思います。
実現方法は2つ考えられます。1つは市販のActiveXコントロールで丸いボタンを購入すること。もう1つは自力でCOMコンポーネントを構築することです。但し、後者については通常C/C++などのツールを使うのが一般的でしょう。なぜならVB自体はRADツールという特性をもつからです。
VBとは「少ない知識と技術でまあまあのものいい加減にしかも早く作ることができるツールである」と理解しましょう。


  • 回答No.2
レベル11

ベストアンサー率 50% (173/345)

コムラッド社から、 「ボタンデザイナー Ver.1.0」 というActiveXコントロールが出てます。 それを使えば、ボタンの外観は自由にデザインできます。 一応ご参考までに。 ...続きを読む
コムラッド社から、
「ボタンデザイナー Ver.1.0」
というActiveXコントロールが出てます。
それを使えば、ボタンの外観は自由にデザインできます。

一応ご参考までに。
  • 回答No.4
レベル12

ベストアンサー率 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 IsInImag ...続きを読む
ごめんなさい。
ちょっと間違えました。
下のほうを↓に修正してください。

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
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ