[C#]Rysowanie bezpośrednio na ekranie w Compact Framework2.0

0

Witam,

Mnie ten problem wykończył, choć starałem się bardzo, i rozgrzewałem długo google pytaniami, odkrywając w międzyczasie istnienie OpenNETCF.GDI+, GDI i inne takie tam.

Więc sięgam po ostateczność. Daje post na forum. Komuś zajmie to tylko 5 minut pewnie :P :)

Mam Compact Framework 2.0.
Chcę narysować obrazek ponad wszystkimi kontrolkami, formatkami, bezpośrednio na ekranie.

Bo rysowałem już po formie, ale rozmaite przyciski mi zakrywają mój jakże wspaniały rysuneczek. A ch*lerny obrazek musi być ponad wszystkim. I potrzebuję go poźniej oczywiście zmazać.

Jak to zrobić?? Bardzo proszę o pomoc, gdyż nie umiem poradzić sobie z tym problemem sam, pomimo że bardzo się staram. Wirtualny [browar] za pomoc :)

0

Czy potrzebujesz aby inne aplikacje tez nie pzrekrywaly ? Jesli tak to moze byc problem bo nie wiadomo jaki system (teoretycznie) bedzie.

Natomiast ja bym zastosowal rozwiazanie proste - wlasna kontrolka (okno), ktora pokazuje sie ponad wszytskimi i je przykrywa. Na niej mozesz juz rysowac.

Mozna tez ukrywac wszytskie komponenty ...

0

Potrzebuję narysować na ekranie obrazek w stylu : trwa wykonywanie operacji - bo kursor CF nie zawsze się pojawia, choć go wołam, a poza tym jest szkaradny.

Czy WindowsCE nie posiada czegoś takiego jak możliwość pobrania kontekstu ekranu i bezpośredniego rysowanie po nim??

Dobra, przespałem się z problemem i widzę rozwiązanie:

        [DllImport("coredll.dll", EntryPoint = "GetWindowDC", SetLastError = true)]
        private static extern IntPtr GetWindowDCCE(IntPtr hWnd);

        public void DrawObject()
        {
            IntPtr vHWND;
            vHWND = new IntPtr();
            Graphics.FromHdc(GetWindowDCCE(vHWND)).DrawImage(Image, Location.X, Location.Y);
        }
0

No bo widzisz nie precyzyjnie zadales pytanie ...

.NET CF nie musi dzialac pod Windows CE. Gdybys zapytal o windows CE dostal bys wlasnie odpowiedz w stylu GetWindowDC, GetDC

0

Fakt. Byłem nieprecyzyjny. A teraz mi doradź jak zmazać, to co narysowałem bo nie mam pomysłu :)

0

Isc za ciosem

ValidateRect
UpdateWindow
InvalidateRect

i tak juz jest nie przenosna

0
[DllImport("coredll")]
private static extern bool UpdateWindow(IntPtr hWnd);

jasne:) Dzięki

0

Niestety tak się nie da, bo co mam przerysowywać, skoro Desktop jest niezależnym oknem. Potrzebuję wywołać funkcję robiącą Refresh ekranu, tylko nie wiem jak się nazywa

0

A sprawdzales InvalidateRect z param 0,0, true. Powinno dzialac.

Generalnie to zla metoda - lepiej przezroczyste formy always on top

0

a jak na przeźroczystej formie zrobisz tak by dało się klikać na np ikonki na pulpicie? =D
( też chce wiedzieć jak sobie tak w .NET rysować )

0

PTwr otoz

To

BorysBe napisał(a)

Potrzebuję narysować na ekranie obrazek w stylu : trwa wykonywanie operacji - bo kursor CF nie zawsze się pojawia, choć go wołam, a poza tym jest szkaradny.

nie wskazuje jednoznacznie tego

PTwr napisał(a)

a jak na przeźroczystej formie zrobisz tak by dało się klikać na np ikonki na pulpicie? =D
( też chce wiedzieć jak sobie tak w .NET rysować )

Swoja drogo mozna przekazac klikniecie pod spod ale to zabawa i ni jak ma sie z przenosnoscia.
Dodatkowo jak rysowac jak czyscic JUZ MASZ NAPISANE ! Oczywiscie pod windows CE i Windows dla .NET ale nie pod .NET ogolnie ! (chyba QT ma opcje dostepu do pulpitu w bibliotece ale nie dam glowy).

Generalnie tworzenie na tej bazie animacji jest malo trafione, szczegolnie gdy sie chce odmalowac caly obszar za kazda klatka (to juz lepiej nie miec kursora niz czekac dwa razy dluzej na malowanie ...).

0

czyli nic nowego w porównaniu do WinAPi jeśli o rysowanie na ekranie =|

1 użytkowników online, w tym zalogowanych: 0, gości: 1