Egyedi Pointer leprogramozása

Egyedi Pointer leprogramozása
2011-05-28T20:12:09+02:00
2011-06-05T20:25:40+02:00
2022-07-19T04:43:53+02:00
  • Mivel a globális kurzort állítom át, ez így teljesen normális. :)

    Skull:
    Nem igazán. A bitblt annyira lassú, hogy a dupla ekkora és a felekkora is ugyanilyen sebességgel megy.

    Állítólag directX overlayekkel jobban lehet olvasni/írni a képet, de ehhez nem konyítok (még).

    Mutasd a teljes hozzászólást!
  • Régebben olyant is sikerült csinálnom (álá XP), hogy printscreen-nel lefotóztam a képet, bevágtam paintbe, és ott is ment a videó .


    Hmm...ez hogy lehetséges?

    Amúgy én is kipróbáltam a megoldásod, és nálam a program bezárása után is ottmaradt az egérkurzor, nem állt vissza a régi. Ez nem tudom hogy szándékos-e, csak szólok.
    Mutasd a teljes hozzászólást!
  • Első nekifutásra kifejezetten jónak mondható próbálkozás.

    És ráadásul 100x100-as ha jól látom, az eredeti 32x32-es még gyorsabb lesz, érdekes ez az random üveg effekt is , ha gondolod átküldöm az nyil bitmap fázisait...

    Ilyesmi koncepcióra gondoltam amúgy, kicsi , gyors és megy.. Igaz van még rajta mit csiszolni de elsőre kifejeztten jó alfa verzió... grat. és köszönöm a figyelmet !
    Mutasd a teljes hozzászólást!
  • Pontosan. Sajnos a windows ablakről leszedni képet nagyon lassú a bitblt-vel. Ha ezt a képést kihagyom, akkor szupergyors.

    Hát egy kcisit belassul aero, de nem nagyon. Ha valaki tud jobb módot a képernyő képének lemásolásához, állok elébe, de ennél jobbat nem találtam. Sima Bitblt-vel megy.

    A másik, hogy bizonyos videolejátszási módoknál láthatatlanná válik a kurzor.

    Így van, ez nem mai probléma, a vga utolsó lépésben rakja rá a videó streamet, ezért nem lehet visszaolvasni a kész képet.

    Régebben olyant is sikerült csinálnom (álá XP), hogy printscreen-nel lefotóztam a képet, bevágtam paintbe, és ott is ment a videó .

    Egyébként csak a 2es módszer életképes, mert az 1essel akármilyen módon visszatolod a képet a képernyőre a következő capture-nál az már benne lesz, így a saját kurzorod is benne lesz, ami nyilván nem elfogadható.

    Üdv CollerbladE
    Mutasd a teljes hozzászólást!
  • Látom, ezt oldottad meg:
    2. Egy időzítővel X időnként lekéred a kurzor alatti területet, kiszámolod a tükrözött képet, és ezt állítod be egérmutatónak. Minél gyorsabb az időzítő, annál több CPU-t fog enni; minél lassabb, annál jobban késik a kurzor képe mozgatáskor.


    Figyeltem is, hogy kicsit késik a kurzor alatti kép a többihez képest. A másik, hogy nálam láthatóan elkezdtek szaggatni az Aero effektek, amíg futott a program, de ez lehet gép/videokártya függő.

    A másik, hogy bizonyos videolejátszási módoknál láthatatlanná válik a kurzor. (A lejátszó egy kamu színnel tölti ki az ablakát, aztán a videokártya helyettesíti be a képet. Az ilyen lejátszásnál nem működik a Print Screen és a te progid sem, mert csak a kamu színt "látják".)
    Mutasd a teljes hozzászólást!
  • Na kipróbáltam XPn is megy simán. Persze zabálja a procit, de ezt majd megoldom később.

    Na mivan kritikusok?
    Mutasd a teljes hozzászólást!
  • Hey
    Csináltam egy prototipust. Egyenlőre még négyzettel dolgozik, és véletlenszerűen, tolja el a pixeleket, szal ilyen rossz üvegfelületnek néz ki.

    Mindenki próbálja ki (nekem win7 alatt megy, de elvileg win2000től felfele kéne): cursor.zip.

    Üdv CollerbladE
    Mutasd a teljes hozzászólást!
  • Ennek az animációnak eredetileg 32 fázisa van, de könnyen redukálható 20-25 frame-re, nem tudom, melyik ma a piacon kapható processzor ne tudná 20-25 FPS mellett akármelyik általad említett megoldást a képernyőre rászámolni... 32x32 nyamvadt kis pixelről van szó... meg 25 fix FPSről, és egy elég CSICSKA effektről, ennek az animációnak SZIGORÚAN KÖTELEZŐEN ZAKATOLNIA KELL egy 300-as celeroncson 3D támogatás nélkül egy 4 megás S3 Trio-val... pl. egy nyitott Offisz csomag mellett !

    De Lássátok milyen nagylelkű vagyok a minimális gépigény amin el kéne futnia ennek az effektnek, az 500 Mhz.
    Mutasd a teljes hozzászólást!
  • Hát hogy mennyire egyszerű, az nyilván csak attól függ, hogy mennyi pénzt vagyok hajlandó rászánni... De pl. van egy olyan ötletem is, hogy szépen az egész asztalt valós időben egy teljes képernyőben futó alkalmazássá kéne konvertálni, mintha csak egy COD4 futna , csak éppen 20ezerszer szerényebb számítási igénnyel... Azt senki ne akarja beadagolni, ha egy COD4 el tud futni x FPS mellett akkor egy már ne is haragudjatok, de CSICSKA feladatot nem lehet 20x FPS mellett lekódolni...
    Mutasd a teljes hozzászólást!
  • Ember, tisztességes oprendszer nem fogja hagyni, hogy csak úgy belefirkálj a videomemóriába! (Elkérni lehet, mint ahogy rá is mutattál.) Rajzolni csak saját ablakba fogsz tudni.

    Két megoldási lehetőséget látok, és mind a kettő problémás:
    1. Kikapcsolod a Windows kurzorát, aztán valahogy egy saját ablakot mozgatsz folyamatosan az egér pozíciójára. Ekkor az a probléma, hogy a kurzor mindig a te ablakodon van, a felhasználói felület megkavarodik.
    2. Egy időzítővel X időnként lekéred a kurzor alatti területet, kiszámolod a tükrözött képet, és ezt állítod be egérmutatónak. Minél gyorsabb az időzítő, annál több CPU-t fog enni; minél lassabb, annál jobban késik a kurzor képe mozgatáskor.

    Egyik esetben se oldottad még meg, hogy a programoknak nem csak az alapkurzorra van szükségük, hanem van homokóra kurzor, szöveges kurzor, méretező kurzor stb.

    Nem olyan egyszerű az, ahogy Pistike elképzeli...
    Mutasd a teljes hozzászólást!
  • Nos API az nincs. De a Windows beépített egerét el lehet tüntetni?

    El lehet.

    Az kurzor poziciót le lehet kérdezni bármikor , bármilyen programnyelvből?

    Le lehet kérdezni.

    A videómemóriát le lehet bármikor kérdezni?

    Le lehet , hiszen ezt akár a júzer is meg tudja tenni a Print Screen gombbal.

    A "refrakciót" meg lehet valósítani?

    Meg lehet, hiszen mi sem bizonyítja ezt jobban, minthogy még Flessben is meg van erre lehetőség, pedig állítólag lassú, meg minden...

    Nos akkor ezek fényébe várom a továbbiakban, nem túl komoly programozók jelentkezését a feladatra.
    Mutasd a teljes hozzászólást!
  • Ami van os support win alatt, az arra elég, hogy fekete / fehér (ezt a két színt átállíthatod) / képernyő színű / inverz képernyő színű pontokból pakolhatsz össze kurzort


    Ez pl. nem fekete fehér.
    alpha blended cursor
    Mutasd a teljes hozzászólást!
  • van API az egérkurzor saját renderelésére Windows alatt


    Nincs. Ami van os support win alatt, az arra elég, hogy fekete / fehér (ezt a két színt átállíthatod) / képernyő színű / inverz képernyő színű pontokból pakolhatsz össze kurzort. Egy timerrel ditheringelhetsz, ha van kedved hozzá, de szerintem az az életben nem lesz normális. Animációkat renderelni Directx + supportjai. Gyakorlatilag egy filmet kell majd folyamatosan futtatnod, amit röptében "írsz meg" a képernyő pontjaiból + az üvegnyíl specifikációinak keverékéből. És akkor ez még csak a desktop nyíl volt, nem a folyamatosan forgó homok óra (amit szintén egy timerrel mindig bitmap szintjén lecserél az os), a mutató kéz, a text mezőn belüli kurzor pozíció kijelölés, meg az összes többi. És pláne még át sem mozgattad a kurzort a desktopról valamelyik ablak fölé, mert olyankor az os lecseréli a teljes kontextust. Minden ablak terület váltásakor.

    Ja, és mindez még csak a windows volt
    Mutasd a teljes hozzászólást!
  • Melyik részét nem értetted annak, hogy nem akarom megcsinálni? Csak szeretnék bizonyítékot látni rá, hogy nem a levegőbe beszélsz.
    Mutasd a teljes hozzászólást!
  • Persze ha KisJ ad valami forrást


    És hogyan osztozunk?
    Mutasd a teljes hozzászólást!
  • Úgy tűnik valakire ráférne egy gyors áttekintés az IT elmúlt pár évtizedéből.

    Ray-Trace és Refraktált animációkat, 64k-s Demókban, ASM-ban, DOS alá...


    Sőt már 4k demókba is belefért ez+az, de az akkor volt, és nem ma. Azóta már nem egy felhasználó egy programja birtokolja az egész gépet, hanem az oprendszer, és az osztja szét több felhasználó több alkalmazásának az erőforrásokat. Mindez azt jelenti, hogy minden alkalmazás bizonyos korlátok között működhet csak. Használni azt használhat human interface szintjén, amire van support. Azon kívül semmit.

    Egy saját bitmapon azt programozol le, amit csak akarsz. Akár azt a forgó üvegnyilat. De csak ott. Mindezt az oprendszerbe belepakolni enyhén szólva nem kicsi munka azzal a peremfeltétellel, hogy nem kellene szanaszét gányolni sem egyik ablakot, sem a desktopot.

    És igen, tegyél _te_ egy ajánlatot. Ugyan ki mondta neked, hogy az ellenkezője törvényszerű ?
    Mutasd a teljes hozzászólást!
  • Valós 3D refrakció számítása valóban DirectX jellegű feladat volna, így viszont Csaboká2-tól várom az árajánlatot.


    Egy szóval se mondtam, hogy meg tudom vagy meg akarom csinálni, csak rámutattam, hogy szerintem nem megoldható, vagy csak sok berhelés árán.

    Persze ha KisJ ad valami forrást arról, hogy van API az egérkurzor saját renderelésére Windows alatt, akkor visszavonom, amit mondtam.
    Mutasd a teljes hozzászólást!
  • így van, tehát egy táblázat szerint vannak a pixelek eltolva a fázishoz és a háttérhez igazítottan, ettől tűnik "refrakciónak" az effekt... Valós 3D refrakció számítása valóban DirectX jellegű feladat volna, így viszont Csaboká2-tól várom az árajánlatot.
    Mutasd a teljes hozzászólást!
  • Tudnál linket adni az ide vonatkozó API függvényekre? A Google nem segít a SetCursor-on túl, az meg nem elég a feladathoz.
    Mutasd a teljes hozzászólást!
  • Az eredeti ötlet az volt hogy csak Tablet-re kéne ezt megvalósítani, pont azért mert még sehol nem láttam kurzort tableten


    Arra nem gondoltál, hogy ennek oka van.
    De tovább fejlesztve, miért nincs fogantyúja a kolbásznak?
    Vagy zipzár a WC papíron.
    Mutasd a teljes hozzászólást!
  • Az eredeti ötlet az volt hogy csak Tablet-re kéne ezt megvalósítani, pont azért mert még sehol nem láttam kurzort tableten, és néha számomra elég zavaró és furcsa, hogy nincs. Innen jött az ötlet, hogy ezt az üveg nyilat kéne lekódolni rá. A dolog persze távolról sem ilyen egyszerű, mivel a Flash 8-tól AS2-től igen erős bitmap funkciók jelentek meg, amiket nehéz átfordítni más nyelvre.. Ilyen a DisplacementMapfilter.. a kód amit át kéne fordítani az így néz ki:

    import flash.filters.DisplacementMapFilter; import flash.geom.Point; import flash.display.BitmapData; var refract:DisplacementMapFilter; var color:Number = 0xdd0000; var alfa:Number = 0xaa0000; _root.onEnterFrame = function():Void { Mouse.hide(); var putpixel = new BitmapData(bg._width, bg._height, false, 0xffffff); putpixel.draw(refcont); refract = new DisplacementMapFilter(putpixel, new Point(0, 0), 1, 1, 10, 10, "ignore", color, alfa); bg.filters = [refract]; };

    Ahol refcont az egy MC amiben a nyíl 32 frames animációja található, és ahol bg a background MC egy layerrel alább, ez lenne a videómemóriából dinamikusan kikroppolt rész.
    Mutasd a teljes hozzászólást!
  • Windows alatt nem nagy kaland lecserélni az egér kurzort.
    OS szinten támogatva van.
    Számolni meg nem kell semmit az effekthez.
    Táblázatból mehet minden.

    Mutasd a teljes hozzászólást!
  • A gond az, hogy az oprendszer egérkurzorát nem tudod a saját kódoddal renderelni. Az oprendszernek tudsz adni egy képet vagy animációt, és azt onnantól ő rendereli, olyan effektekkel, amit éppen támogat (pl. árnyék és/vagy alpha blending).

    A saját ablakodon belül kikapcsolhatod az OS kurzorát, és rajzolsz helyette olyat, amit akarsz, de ablakon kívül ez már problémás. Szerintem ha lehet is, csak nagy berhelésekkel tudod megoldani, és szinte biztos, hogy valamivel össze fog akadni.

    Ez a nagy probléma a dologgal, és nem az, hogy milyen módon számolod ki a tükröződést.
    Mutasd a teljes hozzászólást!
  • Ne vicceskedjünk már ennél 20x összetettebb effekteket is lekódoltak már 20 éve 486-osra , meg Pentium-100-asra , valós idejű NURBS alapú Ray-Trace és Refraktált animációkat, 64k-s Demókban, ASM-ban, DOS alá...

    Ismétlem ez egy 50 soros program. C++-ban sem lehet több maximum néhány száz sornál. A Macromedia Flash 8 néhány beépített bitmap funciója miatt nyilván hosszabb más nyelvben, ASM-ban főleg, de ezt azért nem is várnál el, az csak extra lenne.

    Ez a program ráadásul nem valós 3D-effekt, hanem egy 2D-s , de 3D-nek látszódó trükk, és semmiféle 3D-s gyorsító funkcióra NINCSEN szüksége a videókártya részéről. Itt arról van szó hogy a videómemóriából kéne az egér aktuális poziciója mögött lévő 32x32 pixeles részét kikroppolni és elvégezni vele néhány az általam a flashben megadott műveletet átfordítva arra a nyelvre ki miben tudja ezt megvalósítani.

    Ha csak DirectX segítségével tudnád megvalósítani első körben az sem lenne rossz, és igen az árajánlatot várom a topik nyitása óta.
    Mutasd a teljes hozzászólást!
  • Lyukkártyán is jó lesz nem kell ide ASM


    Mire gondolsz?
    Mutasd a teljes hozzászólást!
  • Lyukkártyán is jó lesz nem kell ide ASM
    Mutasd a teljes hozzászólást!
  • Nem C vagy ASM lesz itt a fő probléma, hanem hogy a régebbi OS-eket és videokártyákat nem erre tervezték. Az elmúlt 1-2 évben nagyon sokat fejlődtek az igények és lehetőségek, de ha valaki pld a winnt-s időkre is emlékszik, ilyesmik még láthatáron sem voltak. Platform függetlenre sem lehet ilyet megírni. A sebesség is erősen HW függő dolog lesz.

    Középhosszú távlati tervekben van tablet verzió is (elsősorban Androidra)

    Sem tablet pc-ken, sem androidon, meg úgy átlag semmiféle érintőképernyős eszközön én egérkurzort még nem láttam. Ez ugye csak vicc volt?

    Talán nem kellene olyan nagyon előre szaladni. Kezdésnek legyen mondjuk csak egy lépésnyire egy mérföldkavics. Csak winxp & directx alapra és csak a rendszer elsődleges mouse kurzorának megbütykölésére (a többi változatlan marad, sebesség elvárás pedig nem lehet) tenni kellene egy ajánlatot, mennyit is ér meg egy ilyen forgó üvegnyíl minimum?
    Mutasd a teljes hozzászólást!
  • elsősorban C++ vagy ASM jöhetne szóba


    Megnézném, aki ezt ASM-ben írja...
    Mutasd a teljes hozzászólást!
  • A konkrét feladat tehát az volna, hogy pixelpontosan ugyanezt a forgó üveg nyilat ki lehessen húzni az asztalra és ott ugyanúgy is viselkedjen. Magyarán torzítsa be a mögötte lévő hátteret, mintha üvegből vagy plexiből lenne.

    Ehhez tudok segítségképpen nyújtani AS2 forráskódot (nagyon rövid alig 50 soros) és a nyilat a kívánt formátumban.

    Az elvásárom az lenne, hogy a kész kód akármilyen programnyelvben van is (elsősorban C++ vagy ASM jöhetne szóba) legyen kicsi, gyors, a Windows verzió működjön mindenféle windows-on , konfigurációtól függetlenül, mintha csak az integrált windows egérmutató volna. Középhosszú távlati tervekben van tablet verzió is (elsősorban Androidra) tehát olyan jelentkezőket várok, akik meg tudnák valósítani ezek közül bármelyik platformra ezt a forgó üveg nyilat.
    Mutasd a teljes hozzászólást!
  • Talán azért nem jelentkeznek, mert nem érthető mit akarsz?
    swf FLEX-ben megírt nyilat akarod más nyelven megíratni, ami fusson winen és linuxon, mint applikáció?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd