色の名前を表示するには?


ばなな  2004-09-09 23:20:12  No: 85478

Pictureに写真を入れ、それをマウスでクリックした時のその部分の色の名前をテキストボックスに表示するプログラムを作りたいのですがどんなプログラムを使えば良いのですか?初心者ですみません。よろしくお願いします。


nanashi  2004-09-09 23:53:21  No: 85479

Pointメソッドで色を取得して、値に応じた名前を返せばイイと思います。
つっても、どこから何処までを「赤」と呼ぶか、
とか考えなきゃならないと思いますが…。


フォレスト  2004-09-09 23:54:19  No: 85480

色の名前って何種類くらい望んでいますか?
何種類もあると結構大変ですけど。。

あと、色情報取得範囲ってどのくらいでしょう?
ドット・インチ・ミリ・センチ色々ありますが。

できればもう少し、こうしたいという詳細をください。


ばなな  2004-09-10 00:12:19  No: 85481

nanashiさん、フォレストさん、レスありがとうございます。
どこまでを「赤」と呼ぶかその範囲をどのように決めるかは私も考えていたところです。
でもまずは最初にRGBの値がはっきりしている赤、青、緑、黒、白の5色くらいを表示出切ればと思っています。


Say  2004-09-10 05:40:00  No: 85482

念のため言っておきますが、
写真のような自然画には原色はほとんど含まれませんから、
「&HFF0000のみが青」みたいな判断をしていると
ほとんどのピクセルの色が「不明」になるのがオチではないかと。


フォレスト  2004-09-13 22:44:59  No: 85483

一応こんな感じでRGBの取得は可能です。
ただ、みなさんがおっしゃっているように、
どこからどこまでを「青」とするかは、ばななさんが判断してください。
HTMLとかの参考書をみると、実際の色とRGBの値が書いてありますので
参考にしてみてはいかがでしょうか?
以降はPictureBoxをクリックしたときの色の取得コードです。
(RGBコードで取得)
始めにPictureBoxと画像を指定してください。

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim lngColor As Long
    Dim strHexCode As String
    '右クリックのみ通す
    If Button = 1 Then
        'ドットが何色かLongで取得
        lngColor = Picture1.Point(X, Y)
        '-1なら取得失敗
        If lngColor <> -1 Then
            '16進数に変換
            strHexCode = Hex(lngColor)
            'イミディエイトに表示
            Debug.Print strHexCode
        End If
    End If
End Sub

これを実行するとイミディエイトにC0C0C0みたいな感じで表示されます。


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

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






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