VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/03/06(Thu) 00:43
投稿者Starfish
Eメール
URL
タイトルRe^2: VB Point(X,Y)について

> 1.ピクチャーの縦横のサイズが同じだとPicture1.Point(x, y)でも取得できます。

>     For i = 0 To .ScaleHeight - 1
>         For j = 0 To .ScaleWidth - 1

 ScaleHeight と ScaleWidth が逆になっています。

> 2.APIを使用すればピクセル単位になりますで取得できます。

>         .ScaleMode = vbPixels
>         .ScaleHeight = 120
>         .ScaleWidth = 160

 ScaleHeight や ScaleWidthを変更しても、ピクチャボックスのサイズは変わりません。
ScaleModeが、0-ユーザーになって、座標系が変わるだけです。ScaleModeがピクセル
じゃないので正常に動作しません。

 以下のコードでうまく行くと思います。

Option Explicit

'ピクセルカラー値を取得する (P489)
Private Declare Function GetPixel Lib "gdi32" _
        (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub Command1_Click()
    Dim i  As Long, j As Long
    Dim Co As Long
    With Picture1
    For i = 0 To .ScaleWidth - 1
        For j = 0 To .ScaleHeight - 1
            Co = .Point(i, j)
            'Co = GetPixel(.hdc, i, j)
            If Co <> QBColor(15) Then
                Debug.Print i, j, Co
            End If
        Next j
    Next i
    End With
End Sub

Private Sub Form_Load()
    Me.ScaleMode = vbPixels
    With Picture1
        .AutoRedraw = True
        .ScaleMode = vbPixels
        .Height = 120
        .Width = 160
        .BackColor = QBColor(15)
    End With
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -