投稿時間:2003/11/25(Tue) 00:32 投稿者名:悠
Eメール:
URL :
タイトル:Re^2: PictureBoxで表示されない・・・
回答ありがとうございます。
Picture1.Point(100, 100)で色を取得すると-1が返ってくるので、 てっきりPictureBoxに表示できていないと思い込んでいたのですが、 花ちゃんさんのテストコードを実行させていただいたところ どうやらPictureBoxに表示はできていたようで、こちらの勘違いだったようです・・・(汗
こちらが詳しく書かなかったばかりに、二度手間になってしまい恐縮なのですが、 Picture1.Point(100, 100)等で、ある地点の色を取得する方法はどうすればいいのでしょうか?
どうかよろしくお願いしますm(_ _)m
以下は花ちゃんさんから頂いたテストコードに色を調べるのを足したコードです。
Option Explicit Private Declare Sub keybd_event Lib "user32.dll" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const KEYEVENTF_KEYUP = &H2 Private Const KEYEVENTF_EXTENDEDKEY = &H1 Private Declare Function MapVirtualKey Lib "user32" _ Alias "MapVirtualKeyA" (ByVal wCode As Long, _ ByVal wMapType As Long) As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private i As Long
Private Sub Timer1_Timer() Dim ff As Long AppActivate "test001.bmp - ペイント" Clipboard.Clear StopTime (100) Picture1.Cls Call sSetSendKeys(vbKeyControl, vbKeyA) Call sSetSendKeys(vbKeyControl, vbKeyC) If Clipboard.GetFormat(vbCFBitmap) Then Set Picture1.Picture = Clipboard.GetData() SavePicture Picture1.Picture, i & ".bmp" i = i + 1 ff = FreeFile Open "aaa.txt" For Append As #ff Print #ff, Picture1.Point(100, 100)
'aaa.txtには '-1 '-1 '-1 '-1 'と値が入ってしまう
Close End If End Sub
Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled 'Timer1.Interval = 1000 で設定しておいて下さい。 End Sub
'以下のコードはここの逆引きヘルプの 'アクティブウインドウにキーストロークを送る を参照して下さい。 Private Sub sSetSendKeys(bVk1 As Long, _ Optional bVk2 As Long = 0, Optional bVk3 As Long = 0) If bVk2 = 0& And bVk3 = 0& Then Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) ElseIf bVk3 = 0& Then Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) ElseIf (bVk1 <> 0&) And (bVk2 <> 0&) And (bVk3 <> 0&) Then Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk3), MapVirtualKey(CByte(bVk3), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk3), MapVirtualKey(CByte(bVk3), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End If StopTime (50) End Sub Private Sub StopTime(st As Long) Dim lngSt As Long lngSt = timeGetTime Do While timeGetTime - lngSt < st DoEvents Loop End Sub
|