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ć?
Eliash [ Generaďż˝ ]
Dla Windowsa 0,0 to lewy górny pixel
Didier z Rivii [ life 4 sound ]
wspolrzedne 1,1 ma lewy gorny punkt
Didier z Rivii [ life 4 sound ]
[edit dla ubogich]
chodzilo oczywiscie o punkt 0,0 tak jak to napisal eliash
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ć?
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.
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.
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.