12. september 2007 - 16:19Der er
16 kommentarer og 1 løsning
Farve fra koordinat?
jeg prøver at finde en måde at finde farven under musen eller på bestemte koordinater i andre programmer end mit. f.eks finde farven for koordinat 100, 100 i internet explorer.
Lav et Bitmap af hele skærmen, og brug GetPixel på det:
Function GetScreenPixel(ByVal X As Integer, ByVal Y As Integer) As Color
Dim oBitmap As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height) Dim g As Graphics = Graphics.FromImage(oBitmap) g.CopyFromScreen(New Point(0, 0), New Point(0, 0), New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)) g.DrawImage(oBitmap, New Point(0, 0)) g.Dispose() Dim cColor As Color = oBitmap.GetPixel(X, Y) oBitmap.Dispose() Return cColor
End Function
Du kan finde musens position med System.Windows.Forms.Cursor.Position
My er en reference til Namespacet My, som bliver autogeneret hvis man opretter et nyt project (i hvert tilfælde i Visual Basic Express 2005). Det giver adgang til en masse funktioner omkring den computer man sidder ved. Jeg gik bare ud fra at du havde adgang til den -min fejl.
Screen objektet findes i System.Windows.Forms, og du skal måske bruge PrimaryScreen i stedet for, da der jo er brugere med flere skærme, eller er tilsluttet et TV.
jeg bruger visual studio .net 2003 på vista. jeg kigger lige lidt efter "My" der står på microsofts hjemmeside at framework 3.0 er en del af vista, så jeg fatter ikke helt Graphics.CopyFromScreen
For i øvrigt er jeg kommet i tanke om, at med den metode jeg beskrev, så er det jo massivt overkill at tage et screenshot af hele skærmen. Man kunne for såvidt nøjes med at lave et bitmap på 1x1 pixel i det punkt man søger farven for............
Dim oBitmap As New Bitmap(1,1) Dim g As Graphics = Graphics.FromImage(oBitmap) g.CopyFromScreen(New Point(X, Y), New Point(X + 1, Y + 1), New Size(1,1)) g.DrawImage(oBitmap, New Point(0, 0)) g.Dispose() Dim cColor As Color = oBitmap.GetPixel(0, 0) oBitmap.Dispose() Return cColor
Det er fordi Return hører til en funktion (det er den værdi der returneres).
I din form (for eksempel) lægger du funktionen:
Function GetScreenPixel(ByVal X As Integer, ByVal Y As Integer) As Color
Dim oBitmap As New Bitmap(1,1) Dim g As Graphics = Graphics.FromImage(oBitmap) g.CopyFromScreen(New Point(X, Y), New Point(X + 1, Y + 1), New Size(1,1)) g.DrawImage(oBitmap, New Point(0, 0)) g.Dispose() Dim cColor As Color = oBitmap.GetPixel(0, 0) oBitmap.Dispose() Return cColor
End Function
Nu kan du kalde funktionen for eksempel fra en knap:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cColor as Color cColor = GetScreenPixel(25,25)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.