投稿日 | : 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