none
[VB2010] 求救...關於color RRS feed

  • 問題

  • 我想問:假如螢幕上有一塊紫色,但裡面的紫色的color只是相近,有些一樣有些不一樣。

    我怎樣才能讓滑鼠指標快速地移到該塊紫色上?

    2011年3月3日 下午 03:07

解答

所有回覆

  •  

    請問:如果要找某點color 的 X,Y,要怎樣寫?

     

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/d2a20c73-341e-4a19-87e4-59f881aeac67

     

    [vb 2008]如何定時地令滑鼠在桌面上按一下?

     

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/30c33324-739c-4196-b8ac-7ecd8423bd53

    Color 成員

    http://msdn.microsoft.com/zh-tw/library/system.drawing.color_members(VS.80).aspx

    http://www.google.com.tw/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http%3A%2F%2Fthesis.lib.ncu.edu.tw%2FETD-db%2FETD-search-c%2Fgetfile%3FURN%3D91521062%26filename%3D91521062.pdf&ei=MB9wTeOJE4TJcaKX2fgC&usg=AFQjCNF-0-7E6lEP6IykeYUlFC5bMTu0OQ

    相近的顏色區塊,參考影像處理連通法論文,把R、G、B值分別取出,設範圍來比對試試...

     

    2011年3月3日 下午 11:09
  • 請問,有沒有比較快一些的方法?
    2011年3月10日 上午 05:25
  • 另外:請問所謂腳本是什麼?
    2011年3月10日 上午 05:29
  • 請問,有沒有比較快一些的方法?
    應該有, 希望你研究出來以後可以分享給我們知道.
    2011年3月10日 上午 10:27
  • 2011年3月10日 下午 12:31
  • to:河蟹我覺得一定已經有:這是按鍵精靈的腳本
    VBSCall FindColorEx(418,294,950,796,"9FC7C0",1,1,x,y) //要打的東西顏色
              If x>=0 and y>=0
                MoveTo x y
                Delay 500
                LeftClick 1
                Delay 500
                VBSCall FindColorEx(418,294,950,796,"9FADEA",1,1,x,y) //要撿的東西顏色
                If x>=0 and y>=0
                  MoveTo x-4 y+20
                  Delay 1000
                  LeftClick 1
                  Delay 1000
                  IfColor 274,959,29c9fb,1 //耐力條的百分比
                    KeyPress 75,1
                    Delay 500
                    KeyPress 75,1
                    Delay 500
                  EndIf 

    第一句:不就有了嗎,而且一句OK,不過可惜這是腳本......但它也一定有方法的....T^T....

    爬過文知道....用雙for是超慢的...所以請問有沒神人出來幫忙一下....

    2011年3月12日 下午 03:48
  • GetDIBits 好像能解決這個問題...

    但不會用....

    2011年3月12日 下午 03:55
  • [C#]做出 Print Screen 儲存螢幕畫面的功能

    http://www.dotblogs.com.tw/chou/archive/2009/03/08/7410.aspx

    Manipulate image pixels very quickly using LockBits wrapped in a class in VB .NET

    http://www.vb-helper.com/howto_net_lockbits_image_class.html

    不曉得您程式是怎麼寫的?先把Screen存成Bitmap,然後用LockBits,雙迴圈比對顏色取出座標點,因為是在記憶體處理,應該會快很多...

    2011年3月12日 下午 04:28
  • HI~

    我做了個差不多的~但效果不太好~

     

      Dim hdc As IntPtr
      Dim x, y As Long
      hdc = GetDC(IntPtr.Zero) '取該Handle值的DC 實驗証明:hdc是一個亂數
      x = MousePosition.X
      y = MousePosition.Y
    
      If MouseButtons = Windows.Forms.MouseButtons.Right Then '中斷點
       TimerRW.Enabled = False
      End If
    
      TextBoxRWNx.Text = TextBoxRWNx.Text + 25  '橫向+1
    
      If TextBoxRWNx.Text > 900 Then
       TextBoxRWNx.Text = 550
       TextBoxRWNy.Text = TextBoxRWNy.Text + 25
      End If
      If TextBoxRWNy.Text > 560 Then
       TextBoxRWNy.Text = 355
      End If
    
      SetCursorPos(TextBoxRWNx.Text, TextBoxRWNy.Text)
      
      PictureBoxRW.BackColor = ColorTranslator.FromWin32(GetPixel(hdc, x, y))
      TextBoxRWR.Text = PictureBoxRW.BackColor.R
      TextBoxRWG.Text = PictureBoxRW.BackColor.G
      TextBoxRWB.Text = PictureBoxRW.BackColor.B
    
      If 50 < TextBoxRWR.Text And TextBoxRWR.Text < 160 Then
       If 10 < TextBoxRWG.Text And TextBoxRWG.Text < 50 Then
        If 50 < TextBoxRWB.Text And TextBoxRWB.Text < 210 Then
         Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
         Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
         TextBoxRWN.Text = TextBoxRWN.Text + 1
        End If
       End If
      End If
      ReleaseDC(IntPtr.Zero, hdc) '將DC 釋放 
     End Sub
    

    其中,有2個缺點~

    1)雖然 intertal 值已經設為1,但仍然太慢 (中斷點下面 到 setcusor 上面,是一個(550,350)to (900,550)的迴圈)

    2)會出現錯誤點擊的情況,因為雖然判別到該點,但可能移動太快(迴圈),來不及點擊,又或許RGB的點不斷縮小的原因

    請問:有什麼比較好的方法去解決這2點的問題?


    2011年3月28日 下午 04:26
  • 搜尋 LockBits

    取代邏輯中的 GetPixel


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年3月28日 下午 04:57