1

画面上の計算されたポイントの色を読み取り、描画する必要があります。

古いバージョンのVBの古いPeekandPoke、またはPointSetとPointGetコマンドに相当するVB.NETとは何ですか?

または、別の方法として、ラベルをカーソルオブジェクトとして使用して、移動時にピクチャーボックスの内容が消去されないようにする方法があります。カーソルを移動するとラベルのテキストが変更されるため、カーソルアイコンを作成することはできません。

4

1 に答える 1

1

ラベル自体をカーソルとして使用することはできませんが、Label コンポーネントをフォームに追加して、次のように、メッセージ フィルターを使用してカーソルと同期して移動することができます。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        Application.AddMessageFilter(New LabelMoveFilter)

    End Sub

    Private Class LabelMoveFilter
        Implements IMessageFilter

        Public Function PreFilterMessage(ByRef m As Message) As Boolean _
            Implements IMessageFilter.PreFilterMessage

            'If the message is &H200 (WM_MOUSEMOVE), reposition the label to
            'where the cursor has moved to

            If m.Msg = &H200 Then
                Form1.Label1.Location = Form1.PointToClient(Cursor.Position)
            End If

            'Return false so that the message is passed on to the form

            Return False

        End Function

    End Class

End Class

Label コンポーネント (この例では Label1) は、フォームの何も上書きせず、一番上に配置されます。ラベルがフォーム上の他のすべてのコンポーネントの前にあることを確認して、他のコンポーネントの後ろにスライドしないようにしてください。次に、ラベルのテキストを必要に応じていつでも設定できます。


編集:質問の他の部分に答えるには...

画面上の任意のピクセルを取得および設定するには、Windows GDI GetPixel および SetPixel 関数を使用できます。次のようにインポートします。

Private Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer, ByVal crColor As Integer) As Integer

次に、これらを次のように呼び出します。

color = ColorTranslator.FromOle(GetPixel(GetDC(0), x, y))

SetPixel(GetDC(0), x, y, ColorTranslator.ToOle(color))

x と y は画面 (フォームではない) 座標で、color は読み取り/設定する色です。必要な X と Y であれば、Cursor.Position.X と Cursor.Position.Y を使用してカーソルの X/Y を取得できます。PointToScreen メソッドと PointToClient メソッドを使用して、フォームからスクリーンへ、スクリーンからフォーム座標へそれぞれ変換できます。

設定したピクセルは、書き込まれたものが再描画されるとすぐに上書きされることに注意してください。また、これらはフォームの外でも読み取り/書き込みを行うことに注意してください。

于 2008-12-06T19:44:52.967 に答える