Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hämta RGB från musens position

Postades av 2001-05-05 12:51:00 - Anders Moldin, i forum visual basic - allmänt, Tråden har 23 Kommentarer och lästs av 633 personer

Ja, hur kan man göra detta?
Programmet ligger och lurar i verkligheten och när man sedan flyttar på muskraken så ska något försöka fundera ut vilka Röd/Grön/Blå-färger som döljer sig under musen... Nån som kan? Tack /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-05 13:33:00 - Sven Åke Persson

Hej
Grundläggande sen får du mixtra själv.
OBS viktigt Form1 i det här fallet skall ha ScaleMode Pixel
Du kan använda Picture1 på samma sätt .Inte Image som ej har hDC

Option Explicit
Private Declare Function GetPixel Lib "gdi32" _
(ByVal hDC As Long, ByVal x As Long, _
ByVal y As Long) As Long
'Modulnivå
Dim RGBColor As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
RGBColor = GetPixel(Form1.hDC, X, Y)
Label1.BackColor = RGBColor
End Sub

mvh
Sven



Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-05 14:07:00 - Anders Moldin

Ja, tack får man väl säga... Fast det hjälpte mig inte 100%-igt...
För det första var den väldigt dålig på att känna av rätt... Den visade bara svart, och grått...
För det andra är jag en nybörjarnybörjare, så lite förklaringar skulle inte sitta fel...
Jag vill egentligen, även om det kanske inte framgick att den ska visa på tre olika labels Röd färg, grön färg och blå färg...
Och i textform då också :) Tackar /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-05 17:30:00 - Sven Åke Persson

Igen
Lägg in en färglad bild i Form1.Picture och testa detta

Option Explicit
Private Declare Function GetPixel Lib "gdi32" _
(ByVal hDC As Long, ByVal X As Long, _
ByVal Y As Long) As Long
Dim RGBColor As Long
Dim RGBStr As String

Private Sub Form_Load()
Form1.ScaleMode = 3 'Pixel
End Sub

Private Sub Form_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
RGBColor = GetPixel(Form1.hDC, X, Y)
RGBStr = Hex$(RGBColor)
Label1 = Val("&H" & Right$(RGBStr, 2))
Label2 = Val("&H" & (Mid$(RGBStr, 3, 2)))
Label3 = Val("&H" & Left$(RGBStr, 2))
Label4.BackColor = RGBColor
DoEvents
End Sub

mvh
Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-05 19:34:00 - Andreas Hillqvist

Ett alternativt:

'Module: Module1 -------------------
Public Type RGB
Red As Byte
Green As Byte
Blue As Byte
Reserved As Byte
End Type

Private Type RGBLong
RGB As Long
End Type

Public Function ToRGB(Color As Long) As RGB
Dim RGBLong As RGBLong
RGBLong.RGB = Color
LSet ToRGB = RGBLong
End Function


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 01:25:00 - Anders Moldin

Tack, jag vill inte klaga men tänk på att jag verkligen är denna nybörjare vi alla nån gång varit?
Jag testade det andra förslaget jag fick från Sven och det fungerade, med två problem: Det visar färgekoderna, men bara en gång... Hur uppdaterar man så att det blir nån gång i sekunden?
Och sen så klarar den ju fortfarande bara från den bilden, jag vill ju ha från hela skärmen... Tack! /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 08:38:00 - Sven Åke Persson

Hej
>Det visar färgekoderna, men bara en gång...

Den visar väl nya värde så fort du flyttar musmarkören ?


Undrar
Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 09:47:00 - Anders Moldin

Nej, det är det som inte står rätt till...


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 10:00:00 - Sven Åke Persson

Hej
Okidoki
Kontrollera att koden ligger i Form1.MouseMove
och att ScaleMode är 3 Pixel.

Du kan ju testa att också lägga koden i MouseUp
Då får du nya värde varje gång du klickar
någonstans i bilden

OBS om du har bilden i en Picture1 så får du givetvis
använda dennas MouseMove och hDC Pixel

mvh
Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 11:49:00 - Anders Moldin

Nu har jag skickat iväg ett mail till dig med en exempelfil, där jag visar hur jag inte fått det att fungera :) Hoppas du kan hjälpa mig...


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 12:28:00 - Sven Åke Persson

Hej
Den har gått i retur som RGBRetur.zip
Du måste skriva koden i Picture1 om det är där bilden ligger

mvh
Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 13:37:00 - Anders Moldin

Sedärja, nu fungerar det ju utmärkt, vad jag inte fattar nu är hur sjutton jag ska kunna fånga färger från hela skärmen? Det borde väl gå... /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 13:57:00 - Sven Åke Persson

Nja
Det blir lurigare.Förslag gör en Capture av den skärm
du är intresserad av,ta in den i en Picture eller Form
Det är kontrollens hDC som styr,Screen har inte detta propertie.

mvh
Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 14:17:00 - Sven Åke Persson

Igen Andreas skrev

>Ett alternativt:

'Module: Module1 ------------------- osv osv.

SVAMMEL ! Hur faen skall en nybörjare få detta att fungera ?

DS


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 15:10:00 - Anders Moldin

Oj, vilket utbrott :)
Jag förstår absolut inte saker som:
'Module: Module1 ------------------- osv osv.
Men om ni menar att jag ska göra en modul och där i skriva:
Public Type RGB
Red As Byte
Green As Byte
Blue As Byte
Reserved As Byte
End Type

Och sen skriva i Koden:
Private Type RGBLong
RGB As Long
End Type

Public Function ToRGB(Color As Long) As RGB
Dim RGBLong As RGBLong
RGBLong.RGB = Color
LSet ToRGB = RGBLong
End Function
Kan ni väl beskriva det lite tydligare? Det är ungefär bara det som behövs... /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-06 16:56:00 - Andreas Hillqvist

"User Definde Type" som jag tror det kallas är en datastruktur.

Public Type RGB
Red As Byte
Green As Byte
Blue As Byte
Reserved As Byte
End Type

Om man deklarerar en variabel som rgb(Dim r as RGB). har den Red, Green, Blue och Reserved som medlemmar:
Dim r as RGB
r.Red = 0
r.Green = 0
r.Blue = 0
r.Reserved = 0

UDT(User Definde Type) är en specifikation hur datat skall lagras. Så data för RGB tar fyra byte varav första byten är Red andra är Green, osv....

Nu finns det ett rätt okänt kommando i VB som heter LSET vilket överför data mellan UDT'er. En long är fyra byte. En färg lagras i en long. Om vi tarr och överför det värdet till fura enskilda bytes så får vi Röd, Grön, blå och en extra byte som inte används...

Hoppas det är lite klarrare nu... :O)


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-07 15:35:00 - Anders Moldin

Jo, lite, lite... Men jag förstår inte hur jag ska kunna använda det i praktiken, skulle du kunna bemöda dig att skicka över en exempelfil kanske? /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-07 23:16:00 - Andreas Hillqvist

Option Explicit

Private Declare Function GetPixel Lib "gdi32" _
(ByVal hDC As Long, ByVal X As Long, _
ByVal Y As Long) As Long

Public Type RGB
Red As Byte
Green As Byte
Blue As Byte
Reserved As Byte
End Type

Private Type RGBLong
RGB As Long
End Type

Public Function ToRGB(Color As Long) As RGB
Dim RGBLong As RGBLong
RGBLong.RGB = Color
LSet ToRGB = RGBLong
End Function

Private Sub Form_Load()
ScaleMode = vbPixel
End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Color as Long
Dim RGB as RGB

Color = GetPixel(hDC, X, Y)
RGB = ToRGB(Color)

Label1 = RGB.Red
Label2 = RGB.Green
Label3 = RGB.Blue
Label4.BackColor = Color
Refresh
End Sub


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-07 23:33:00 - Sven Åke Persson

Hej
När man ser Andreas utläggning kommer man att tänka på

"Mycket skrik för lite ull sa kärringen när hon klippte grisen"

Sven


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-08 09:19:00 - Andreas Hillqvist

Jag älskar dig med SvenPon... *Puss, puss*

Har för mig att det är det snabbaste sättet att i vb bryta ut RBG värdena... Snabare en binär AND. Vilket jag skulle rekomendera som nybörjar lösning. Förstår faktist inte varför du konvertera det till en hexadecimal sträng och plockar or stycken för att sedan konvertera det till tal. Jag förstår bara inte...

Mitt nybörjar exempel...

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Red As Byte
Dim Green As Byte
Dim Blue As Byte
Dim Color As Long

Color = Point(X, Y)

Red = Color And vbRed
Green = (Color And vbGreen) / &H100&
Blue = (Color And vbBlue) / &H10000

End Sub


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-08 10:41:00 - Anders Moldin

Jahaja, skulle det isf räcka med att lägga in den koden? Eller ska jag ha med det däringa
"Option Explicit

Private Declare Function GetPixel Lib "gdi32" _
(ByVal hDC As Long, ByVal X As Long, _
ByVal Y As Long) As Long"
också?
Jag känner mig rätt dum, men den som inget frågar han får heller inget veta eller hur man nu ska säga... /Molle


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-09 07:55:00 - Anders Moldin

Hallå?


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-09 09:31:00 - Andreas Hillqvist

Option Explicit bör du placera längst upp i alla moduler. Tvingar dig att deklarera alla variabler. Vilket hjälper mycket. Helst om man stavat fel i ett variabelnamn.


Private Declare Function GetPixel Lib "gdi32" _
(ByVal hDC As Long, ByVal X As Long, _
ByVal Y As Long) As Long"

Är en API dekleration. Om du vill "fång" kordinater inom vb i t.ex ett formulär eller i en picture box är det nog bekvämare att använda sig av Point metoden.

Fördelen med GetPixel är att du kan skicka hDC för skrivbordet och på så sätt hämta en pixel från hela skärmen.


Svara

Sv: Hämta RGB från musens position

Postades av 2001-05-15 19:36:00 - Anders Moldin

Är det någon som har gjort ett program på detta redan? Kanske nån som kan skicka en exempelfil? Tack /Molle


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
556
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies