[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/06/19(Tue) 11:39
投稿者名:アンティニー
Eメール:
URL :
タイトル:
マウスが押された位置でのPictureの色を取得したい
 Picture1には、Picture1.CircleやPicture1.Lineで書かれた図形がちりばめられています。
マウスでそれぞれの図形が選択されたら、個々の図形を消すプログラムを作成しております。

 Picture1上でマウスが押されたら中央に表示させ、そのポイントの色を識別したいのですが、
下記の様に、gdi32を使ったプログラムをネットでみつけて使ってみましたが、戻り値には
常に-1が帰ってきてしまい、うまく動作しません。
 GetColor = GetPixel(Picture1, X, Y)

---------------------------------------------------------------------------------------

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, _
                                                               ByVal Y As Long) As Long
Private Const LC As Long = &HC0FFFF     '比較対象の色

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, _
                                                                           Y As Single)
    Dim GetColor As Long
    Dim PadColor As Long
    
    Picture1.ScaleLeft = X - (Picture1.ScaleWidth / 2)
    Picture1.ScaleTop = Y - (Picture1.ScaleHeight / 2)
    
    GetColor = GetPixel(Picture1, X, Y)
    PadColor = Val(LC)
    
    If GetColor = PadColor Then
        Debug.Print "線"
    Else
        Debug.Print "以外"
    End If
    
    Picture1.Refresh
    Call Command1_Click
    
End Sub

投稿時間:2007/06/19(Tue) 12:10
投稿者名:大吉末吉
Eメール:
URL :
タイトル:
Re: マウスが押された位置でのPictureの色を取得したい
>     Picture1.ScaleLeft = X - (Picture1.ScaleWidth / 2)
>     Picture1.ScaleTop = Y - (Picture1.ScaleHeight / 2)

これは、何を行っているんです???


いずれにせよ、
>     GetColor = GetPixel(Picture1, X, Y)
GetPixelの様なAPIの座標指定はPixel固定です。

VBの「Scale*」系のプロパティやメソッドによる座標系指定は無効です。

#(X,Y)の座標をPixcel座標に変換しい指定してみてください。

投稿時間:2007/06/19(Tue) 16:18
投稿者名:アンティニー
Eメール:
URL :
タイトル:
Re^2: マウスが押された位置でのPictureの色を取得したい
> これは、何を行っているんです???

 質問の部分とは直接関係しない部分のコードで(消し忘れ
選択した位置をPictureの中心へ移動する部分です。

> GetPixelの様なAPIの座標指定はPixel固定です。
> VBの「Scale*」系のプロパティやメソッドによる座標系指定は無効です。
> #(X,Y)の座標をPixcel座標に変換しい指定してみてください。

 単位の変換ルーチンを作成するという事ですよね?
考えてみます。

投稿時間:2007/06/19(Tue) 18:08
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re^3: マウスが押された位置でのPictureの色を取得したい
>  単位の変換ルーチンを作成するという事ですよね?
> 考えてみます。
←当サイト内・外の検索
を利用して『Pixel』でキーワード検索してみるとか。