Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
KuboSVK
Založen: 13. 03. 2008 Příspěvky: 40
|
Zaslal: 13. březen 2008, 20:17:06 Předmět: Farba pixelu |
|
|
Zdar,
da sa nejako v .NET vo Windows Forms zistit farba pixelu ked kliknem mysou na obrazovku na nejake miesto ??? |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 13. březen 2008, 22:23:20 Předmět: |
|
|
No přes GetPixel nad bitmapou (pokud nekreslíš rovnou do bitmapy a ani jí nezískáš z komponenty, kterou chceš (Form), tak si můžeš nechat sejmout do bitmapy celou obrazovku nebo aktivní okno a nad tím si pak pracovat) _________________
|
|
Návrat nahoru |
|
|
KuboSVK
Založen: 13. 03. 2008 Příspěvky: 40
|
Zaslal: 13. březen 2008, 22:58:43 Předmět: |
|
|
s Bitmapou sa mi to nezda prilis efektivne, rychlejsie by to bolo keby som volal Win32 API (GetPixel(), GetWindowDC()) ale kedze to robim na WindowsMobile 5.0 mam problem importnut dll:
[DllImportAttribute ("Coredll") CharSet = CharSet.Auto]
private static extern int GetPixel(int hdc, int xPos,int yPos);
mi nejde. Neviete niekto ako vyuzit unmanaged kod v C# pod Windows Mobile 5.0 ??? |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 13. březen 2008, 23:18:01 Předmět: |
|
|
Pokud si to dobre pamatuju, tak minimalne v .NET CF 1.1 michat managed a unmanaged kod nejde (resp. nelze volat funkce z externich dll). Nebo se pletu? _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 13. březen 2008, 23:26:12 Předmět: |
|
|
Pokud bys nechtel pouzivat unmanaged kod, tak by neco melo jit dosahnout pres Graphics.FromHdc, resp. Graphics.FromHwnd. Ale obavam se, ze to v CF taky nejak rozumne nakombinovat nejde. _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 13. březen 2008, 23:27:46 Předmět: |
|
|
OndraSej: Pletes, ja i v .NET CF 1.x externi volani pouzivam (at uz coredll nebo system32 podle platformy, P/Invoke deklaruju pro obe)
KuboSVK: Tvoje otazka se tykala .NET a WinForms, a kdyz ti ji v ramci .NET zodpovim, tak mi vynadas, ze to nebude efektivni a chces najednou vyuzit unmanaged kod, to jsi nemel o .NET nic psat
Jinak na sejmuti obrazovky do bitmapy pres P/Invoke WinApi ti muzu poslat kod zitra (ted sedim u NB a nechci uz hlavni komp zapinat), vyuzivala to moje .NET aplikace provadejici OCR hry Letteria a hrajici misto cloveka _________________
|
|
Návrat nahoru |
|
|
KuboSVK
Založen: 13. 03. 2008 Příspěvky: 40
|
Zaslal: 13. březen 2008, 23:37:08 Předmět: |
|
|
Mem napsal: |
OndraSej: Pletes, ja i v .NET CF 1.x externi volani pouzivam (at uz coredll nebo system32 podle platformy, P/Invoke deklaruju pro obe)
KuboSVK: Tvoje otazka se tykala .NET a WinForms, a kdyz ti ji v ramci .NET zodpovim, tak mi vynadas, ze to nebude efektivni a chces najednou vyuzit unmanaged kod, to jsi nemel o .NET nic psat
Jinak na sejmuti obrazovky do bitmapy pres P/Invoke WinApi ti muzu poslat kod zitra (ted sedim u NB a nechci uz hlavni komp zapinat), vyuzivala to moje .NET aplikace provadejici OCR hry Letteria a hrajici misto cloveka |
JJ, samozrejme ze mas pravdu ze to v managed kode bude vzdy pomalsie, mne slo skor o to, ze je to zbutocne viac kodu ked sa daju pouzit funkcie z win API
Mohol bu si mi potom poslat ukazky ako volas externe funckie z coredll a pod., nech vidim ako to importnut + to savnutie obrazovky
P.S. Ja som ti nevynadal, to je len konstruktivna debata |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 14. březen 2008, 10:42:22 Předmět: |
|
|
Nejdřív ke slíbenému screen capturingu do bitmapy, já používám tento kód, ale na PC, takže neručím za to, že to pojede i na Pocket PC, ale mělo by to být standardní GDI a ne GDI+, takže uvidíš (maximálně to napíše invalid method , dej pak vědět)
Pro P/Invoke, který chci využít na platformě PC i PPC (tj. jedno exe, které spustíš bez problémů na obou) používám deklarace typu:
kód: |
[DllImport("coredll.dll", EntryPoint = "PlaySound")]
public static extern int PlaySoundPDA(byte[] szSound, IntPtr hModule, int flags);
[DllImport("winmm.dll", EntryPoint = "PlaySound")]
public static extern int PlaySoundPC(byte[] szSound, IntPtr hModule, int flags); |
a pak jen v nějaké svojí funkci PlaySound dle proměnné System.Environment.OSVersion.Platform == PlatformID.WinCE zjišťuju, kterou verzi zavolat.
Jinak už hotové a funkční hlavičky pro P/Invoke najdeš na webu http://pinvoke.net/ _________________
|
|
Návrat nahoru |
|
|
KuboSVK
Založen: 13. 03. 2008 Příspěvky: 40
|
Zaslal: 18. březen 2008, 19:05:23 Předmět: |
|
|
Mem napsal: |
Nejdřív ke slíbenému screen capturingu do bitmapy, já používám tento kód, ale na PC, takže neručím za to, že to pojede i na Pocket PC, ale mělo by to být standardní GDI a ne GDI+, takže uvidíš (maximálně to napíše invalid method , dej pak vědět)
Pro P/Invoke, který chci využít na platformě PC i PPC (tj. jedno exe, které spustíš bez problémů na obou) používám deklarace typu:
kód: |
[DllImport("coredll.dll", EntryPoint = "PlaySound")]
public static extern int PlaySoundPDA(byte[] szSound, IntPtr hModule, int flags);
[DllImport("winmm.dll", EntryPoint = "PlaySound")]
public static extern int PlaySoundPC(byte[] szSound, IntPtr hModule, int flags); |
a pak jen v nějaké svojí funkci PlaySound dle proměnné System.Environment.OSVersion.Platform == PlatformID.WinCE zjišťuju, kterou verzi zavolat.
Jinak už hotové a funkční hlavičky pro P/Invoke najdeš na webu http://pinvoke.net/ |
jj, dik, ten screen capturing mi pomohol, trosku som ho pozmenil a vyzera, ze to frci |
|
Návrat nahoru |
|
|
|