GRY-Online.pl --> Archiwum Forum

Do grafików/programistów

23.04.2004
13:57
smile
[1]

Mark24 [ >>>Martinez751<<< ]

Do grafików/programistów

Mam do napisania pewen programik. Niestety bazuje on na tym co sie auktualnie dzieje na screenie.
Więc potrzebuję współrzędnych odpowiednich punktów ekranu.

Obmyśliłem taki sposób - robię zrzut ekranu, otwieram w jakimś programie graficznym i liczę. Tylko którey punkt ma współrzędne 1,1 (czy może 0,0?) - lewy dolny?

Mam te punkty policzone dla współrzędnych 1280x1024 chcę je zmienić na 1024x768 czy można je jakoś sprytnie przeliczyć?

23.04.2004
14:00
[2]

Eliash [ Generaďż˝ ]

Dla Windowsa 0,0 to lewy górny pixel

23.04.2004
14:01
smile
[3]

Didier z Rivii [ life 4 sound ]

wspolrzedne 1,1 ma lewy gorny punkt

23.04.2004
14:02
[4]

Didier z Rivii [ life 4 sound ]

[edit dla ubogich]
chodzilo oczywiscie o punkt 0,0 tak jak to napisal eliash

23.04.2004
14:16
[5]

Mark24 [ >>>Martinez751<<< ]

A czy da się z jakimś am prawdopodobieństwem (załóżmy 80%) przeliczyć współrzędne z 1280x1024 na 1024x768. Czy to raczej bez sensu bo i tak nic nie będzie sie zgadzać?

23.04.2004
14:22
[6]

fanlegii79 [ Konsul ]

Piszesz bot-a w auto-it?

Nie dokonca rozumiem gdzie problem jak program ma dzilac na takim ekranie jakiego masz zrzut to paint ci powie wspolrzedne punktu na bitmapie. Dlaczego chcesz zmieniac rodzielczosc. Nie latwiej odpalic program w tej rozdzielczosci docelowej i zrobic sobie w niej zrzuty? Natomiast sprytne przeliczenie raczej nie jest wykonalne bo rozne programy roznie reaguja na zwiekszenie rozdzielczosci.

23.04.2004
14:28
[7]

Mark24 [ >>>Martinez751<<< ]

dokładnie fanlegii79
jak umiesz coś pod autoit to z chęcią bym sie poradził w kilku kwestiach, a znalazłem ten programik wczoraj i jestem pod wrażeniem.

23.04.2004
14:45
[8]

Mark24 [ >>>Martinez751<<< ]

Tamte przeliczę tak jak mówisz, tylko trochę nie na rękę robienie mi ~10zrzutów i ślęczenie nad tym wolałem pójść na łatwiznę.

Natomiast tego kawałka kodu do końca nie rozumiem. jakbyś mógł to prosiłbym o wytłumaczanie:

Func PixelGetRGB($x, $y)
$hex = Hex(PixelGetColor($x, $y), 6)
$r = hexToDec(StringRight($hex, 2)) & "|"
$g = hexToDec(StringMid($hex, 3,2)) & "|"
$b = hexToDec(StringLeft($hex, 2))
Return StringSplit($r & $g & $b, "|")
EndFunc
; Returns the decimal equivalent of a $hex string like "05ff"
Func hexToDec($hex)
$dec = 0 ;running total
$n = StringLen($hex);number of digits
For $i = 1 to $n
$d = StringMid($hex, $i, 1);digit
Select
Case $d >= "0" And $d <= "9"
$dec = $dec + (Asc($d)-48) * 16 ^ ($n-$i)
Case $d >= "A" And $d <= "G"
$dec = $dec + (Asc($d)-55) * 16 ^ ($n-$i)
Case $d >= "a" And $d <= "g"
$dec = $dec + (Asc($d)-87) * 16 ^ ($n-$i)
EndSelect

Na oko..... Wywołujemy funkcję podając współrzędne punktu i w wyniku otrzymujemy dziesiętną liczbę oznaczającą numer koloru tego punktu? tak?

Potem mam coś takiego:
$a = PixelGetRGB(71,995)
$c = PixelGetRGB(86,995)
$d = PixelGetRGB(135,998)
$e = PixelGetRGB(113,996)
$f = PixelGetRGB(108,993)
$g = PixelGetRGB(131,996)
OK do tego momentu czaję, ale następna linijka to jakiś skomplikowany warunek
If $a[1] = 255 AND $a[2] > 130 < 205 AND $a[3] > 159 < 220 AND $c[1] = 255 AND $c[2] > 130 < 205 AND $c[3] > 159 < 220 AND $d[1] = 255 AND $d[2] > 130 < 205 AND $d[3] > 159 < 220 Then

Dwa pytania:
skąd raptem z jednej zmiennej wzięło się $a[1], $a[2] (to są dwie zmienne?, jakaś tablica jednowymiarowa? - nawet nie wiem jak to w helpie znaleźć a całości nie mam czasu przejrzć)
I co to za składnia np. $d[2] > 130 < 205 ???? (czy to znaczy większe od 130 mniejsze od 250 bo zapis jest dziwaczny)

Byłbym bardzo zobowiązany, próbuję z całości sklecić coś swojego, ale w Autoit nigdy nic nie pisałem. Nie wygląda to na skomplikowany język, ale niektóre funckje są dziwne.

© 2000-2025 GRY-OnLine S.A.