Rysowanie obrazów i kontrolka Image w WPF

0

Chciał bym się zapytać czy w wpf jest możliwość tworzenia interfejsu w podobny sposób jak w WF a mianowicie chodzi mi o rysowanie w OnPaint, czy w wpf trzeba polegać tylko na tworzenie kontrolek Image kiedy chce "narysować" w kontrolce jakiś obrazek?

Pytam ponieważ planuje poduczyć się wpf głównie z powodu ze jest w nim możliwe posiadanie przezroczystych i półprzeźroczystych elementów co bardzo chciał bym osiągnąć.

1

Masz metodę OnRender: http://msdn.microsoft.com/en-us/library/system.windows.uielement.onrender.aspx

Przy czym używanie jej nie jest w dobrym tonie w WPF.
Po pierwsze - jest powolna.
Po drugie - rysowanie ręczne jest mniej wygodne w WPF niż w WF.
Po trzecie - jest to kompletnie na opak idei WPF, które udostępnia 'deklaratywny' interfejs (tworzysz figury, które rysują 'się same').
Po czwarte - nie jest używana bezpośrednio podczas rysowania, tylko jest wrzucana do kolejki rozkazów i wykonywana asynchronicznie.
Itd, itd...

Pytam ponieważ planuje poduczyć się wpf głównie z powodu ze jest w nim możliwe posiadanie przezroczystych i półprzeźroczystych elementów co bardzo chciał bym osiągnąć.

Propozycja - w takim razie, może zamiast uczyć się WPF prościej będzie spróbować np. to:
http://www.codeproject.com/Articles/17681/Windows-Vista-Aero-Glass-in-NET-Managed-Win32-Appl

PS. Na przyszłość - nadawaj tematom opisowe nazwy, jesteśmy na to wyczuleni...

0

Czyli rozumiem ze powinienem używać jednak tej kontrolki Image, pytam dlatego bo chce zrobić cały interface programu, wszystko na bazie grafik wiec nie wiedziałem czy to dobry pomysł aby wszystko pakować do kontrolek image, bo będzie ich całkiem sporo, przykładowo każde okienko będzie się składać z około 15 takich, bądź scrollbar w którym ruchoma cześć będzie składać się z 3 którymi będę musiał poruszać.

Mam jeszcze jedno pytanie, w jaki sposób w WPF mogę napisać funkcje GetInstance, bo WF posiadał klasę Program.cs w której była otwierana formatka głównego okna i tam inicjowałem GetInstance ale w wpf nie wiem w jakiej klasie jest tworzona klasa głównej formatki.

Co do WF to ta metodę testowałem ale ma ona pewne niedogodności, ta przeźroczystość działa ale jeśli pod przezroczysta kontrolka jest inna to ta na drugim planie nie jest odświeżana gdy ta na wierzchu się zmieni, wygląda to tak jakby nagle znikło jej pół, prócz tego kiedy używam w tym przypadku DoubleBuffera to ta metoda nie działa, naprawdę szukałem rozwiązania długo i nic nie znalazłem wiec muszę przerzucić się na WPF, choć nie leży mi to rozwiązanie.

1

Stary, radziłbym Ci popatrzenie na dowolny tutorial do WPF i od tego zacząć się uczyć. Bo próbujesz bezmyślnie przenieść kod z WF do WPF.

0
siararadek napisał(a):

Stary, radziłbym Ci popatrzenie na dowolny tutorial do WPF i od tego zacząć się uczyć. Bo próbujesz bezmyślnie przenieść kod z WF do WPF.

Przeczytałem jeden tutorial z podstawami, nie rozumiem o co chodzi z tym "bezmyślnie" (to że pytam bo chce coś zrobić dobrze nie oznacza że jest to bezmyślne) ale tak właśnie to planuje

0

Co do Instance zrobiłem tak:
W App.xaml.cs dodałem konstruktor:

 public App()
        {
            this.MainWindow = WpfApplication1.MainWindow.GetInstance();
            this.MainWindow.Show();
        }

A w kodzie designera (App.xaml) usunąłem:

StartupUri="MainWindow.xaml" 

no i oczywiście w głównym oknie funkcja:

 private static MainWindow Instance;

        public MainWindow()
        {
            InitializeComponent();
        }

        public static MainWindow GetInstance()
        {
            if (Instance == null)
                Instance = new MainWindow();

            return Instance;
        }

I teraz pytanie czy to nie zaburzy w jakiś sposób działania programu? ;]

0

Nie no działać program działa ale chodzi mi bardziej czy w przyszłości to może jakieś problemy sprawić ;p

PS. jak wy na tym forum ten tak jakby komentarz do posta piszecie? xD

0
Arek123 napisał(a):
siararadek napisał(a):

Stary, radziłbym Ci popatrzenie na dowolny tutorial do WPF i od tego zacząć się uczyć. Bo próbujesz bezmyślnie przenieść kod z WF do WPF.

Przeczytałem jeden tutorial z podstawami, nie rozumiem o co chodzi z tym "bezmyślnie" (to że pytam bo chce coś zrobić dobrze nie oznacza że jest to bezmyślne) ale tak właśnie to planuje

To bezmyslnie chodzi o to, ze WPF i WF to zupelnie inne technologie, trzeba podchodzic do nich inaczej

Co do tego scrollbara, nie lepiej zrobic jakas kontrolke uzytkownika? A nie bawic sie we wrzucanie obrazow?

0
xxSlayeRxx napisał(a):
Arek123 napisał(a):
siararadek napisał(a):

Stary, radziłbym Ci popatrzenie na dowolny tutorial do WPF i od tego zacząć się uczyć. Bo próbujesz bezmyślnie przenieść kod z WF do WPF.

Przeczytałem jeden tutorial z podstawami, nie rozumiem o co chodzi z tym "bezmyślnie" (to że pytam bo chce coś zrobić dobrze nie oznacza że jest to bezmyślne) ale tak właśnie to planuje

To bezmyslnie chodzi o to, ze WPF i WF to zupelnie inne technologie, trzeba podchodzic do nich inaczej

Co do tego scrollbara, nie lepiej zrobic jakas kontrolke uzytkownika? A nie bawic sie we wrzucanie obrazow?

To że jest to inny język i trzeba podchodzić do niego inaczej to nie oznacza ze nie można osiągnąć nim tego samego efektu, więc to "bezmyślnie" dalej nie nabrał żadnego sensu.

A ten scrollbar to właśnie jest usercontrol tylko że ja chce właśnie żeby on był oparty o grafikę.

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