Kezdőoldal » Számítástechnika » Programozás » Hogyan kérjem le a képernyő...

Hogyan kérjem le a képernyő színeit Visual Basic -ben?

Figyelt kérdés

Visual Basic programnyelvben, hogyan tudom lekérni a képernyő színeit?

(Egyenlőre tanulgatom a nyelvet és gondoltam csinálok egy monitor RGB háttérvilágítást, de ehhez szükségem lenne az egész képernyő szinére átlagban*.)


Arra gondoltam, hogy csinálok egy screenshot (Bitmap) -ot, majd "összegyűjtöm" minden 10. pixel színét (RGB) majd valahogy csinálok egy "átlag számítást".


Azt, hogy hogy "számítok átlagot" nem tudom és abban sem vagyok biztos, hogy amit eddig csináltam jól csináltam.


Ha esetleg valaki tudna küldeni működő kódót, azt nagyon megköszönném, de bármiféle segítségért hálás vagyok.



Amivel próbálkoztam:



Bitmap:

---------------------------------------------------------


Private Function Screenshot() As Bitmap

Dim b As Bitmap = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)


Using g As Graphics = Graphics.FromImage(b)

g.CopyFromScreen(0, 0, 0, 0, b.Size, CopyPixelOperation.SourceCopy)

g.Save()

End Using


Return b

End Function

---------------------------------------------------------


RGB:

---------------------------------------------------------

Private Structure RGB

Public Property R As Integer

Public Property G As Integer

Public Property B As Integer

End Structure


Private Function GetAllRGB(ByVal img As Bitmap) As RGB()

Dim rgbCollection As List(Of RGB) = New List(Of RGB)


For x As Integer = 0 To img.Width

For y As Integer = 0 To img.Height

Dim pixelColor As Color = img.GetPixel(x, y)

Dim pixelRGB As RGB = New RGB With {.R = pixelColor.R, .G = pixelColor.G, .B = pixelColor.B}


rgbCollection.Add(pixelRGB)

Next

Next


Return rgbCollection.ToArray()

End Function

---------------------------------------------------------



GetAllRGB(Screenshot)



2020. aug. 27. 00:57
 1/2 anonim ***** válasza:
És ennek mi is az értelme? Ha átlagolod a színek értékét akkor szürkét kapsz.
2020. aug. 27. 06:48
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

Külön kell átlagolnod az R, G és a B összetevőket.

Ehhez felesleges kigyűjtened külön az összes értéket, elég ha folyamatosan összeadod és a végén osztod el, vagy ha így túl nagy értékeket kapnál és nem fér el az integerben, akkor soronként is átlagolhatod, majd ezt adogatod össze. A végén meg osztod.

Egyébként igaza van az előzőnek, valószínűleg egymáshoz nagyon hasonló értékeket fogsz kapni az R, G és B összetevőkre, az eredmény meg egy szürkéhez hasonló szín lesz. Ez ellen azt csinálnám, hogy a legintenzívebb összetevőt felerősíteném, a leggyengébbet meg tovább gyengíteném. De lehet vele utána kísérletezgetni, hogy milyen kompenzációval érsz el legszebb eredményt.

2020. aug. 27. 11:59
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!