CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy zamierzasz pobrać Internet Explorer 9?


CentrumXP.pl » Microsoft .NET » Visual C# w praktyce » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

Wygaszacz ekranu w C#

Autor: Marcin Hałaczkiewicz    Opublikowano: 8 czerwca 2006    Odsłon: 42175    »Skomentuj...
Strona:
Zobacz również:

Analogowy zegarek

Budzik w C#

Commander w C#

Kalkulator w C#

Komunikator w C#

Mini Paint w C#

Notatnik w C#

Przeglądarka internetowa w C#

Przeglądarka zdjęć w C#

Przetwarzanie obrazów

Snake w C#

Tetris w C#

»Uzyskaj pomoc na forum

Dzisiaj zajmiemy się prostym wygaszaczem ekranu. Program będzie się składał z formy bez obramowania i paska u samej góry (tego z przyciskiem do zamknięcia). Zmaksymalizowana forma zajmie cały ekran. Na niej będziemy wyświetlać co jakiś czas zdjęcia umieszczone w katalogu :, który musi znajdować się w folderze z programem. Po ruszeniu myszką, naciśnięciu klawisza lub przycisku myszki - wygaszacz się wyłączy.

Zaczynamy od stworzenia nowego projektu, nazywamy go wygaszacz. Taką samą nazwę z przedrostkiem frm nadajemy automatycznie utworzonej formie. Zmieniamy w niej również BackgroundImageLayout na Stretch. Dzięki temu obrazek w tle formatki będzie rozciągnięty. Aby pozbawić okno programu obramowania, a przede wszystkim górnego paska, ustawiamy pole FormBorderStyle na None. Chcielibyśmy, aby aplikacja uruchamiała się zminimalizowana (dlaczego - o tym zaraz), więc zmieniamy WindowState na Minimized. Jeszcze tylko ulepszone odświeżanie grafiki dzięki zmianie DoubleBuffered na True i forma jest przygotowana. Potrzebujemy teraz kontrolki Timer, która będzie zmieniać zdjęcie w tle co jakiś czas. Tworzymy ją, nazywamy licznik i przestawiamy Interval na np. 3000 (3 sekundy). Zajmijmy się teraz właściwym pisaniem kodu.

Przechodzimy do widoku kodu formatki. Aby możliwe było korzystanie z klas do obsługi operacji na plikach/katalogach na samej górze dopisujemy:

using System.IO;

Następnie odajemy do formy następujące zmienne:
int x, y; - pozycja kursora w momencie uruchomienia programu
string[] pliki; - nazwy plików z katalogu "obrazki"
int n = 0; - liczba plików w katalogu "obrazki"
int nr_obrazka = 0; - nr aktualnie wyświetlanego obrazka

Następnie utwórzmy obsługę zdarzenia FormLoad dla naszej formy. We wnętrzu funkcji wpisujemy:

bool jakikolwiek = false;
x = Cursor.Position.X;
y = Cursor.Position.Y;
string dir = Application.StartupPath + "\\obrazki";
try
{
    pliki = Directory.GetFiles(dir);
}
catch
{
    MessageBox.Show("W folderze z programem\n" +
        "musi znajdować się katalog \"obrazki\",\n" +
        "zawierający obrazki do wyświetlania.", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
}
n = pliki.Length;
if (n == 0)
{
    MessageBox.Show("Brak plików w katalogu", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
}
do
{
    try
    {
        BackgroundImage = Image.FromFile(pliki[nr_obrazka++]);
        jakikolwiek = true;
        break;
    }
    catch { }
} while (nr_obrazka < n);
if (!jakikolwiek)
{
    MessageBox.Show("Katalog nie zawiera plików graficznych.", "Błąd",
        MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
}
Cursor.Hide();
this.WindowState = FormWindowState.Maximized;
licznik.Start();


1 2 3 Dalej» 

Aktualna ocena to: 3,71

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!

Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do Wygaszacz ekranu w C#

Dodaj komentarz»

www.taex.yoyo.pl 9 czerwca 2006, 21:04

Fajna instrukcja tylko skąd wziąść C#??

Paweł Wujczyk 9 czerwca 2006, 23:01

http://2005express.pl/

m010ch 11 czerwca 2006, 1:10

Świetny tutorial - opisana prosta obsługa błędów, MessageBox'y i operacje na plikach/katalogach w jednym :) Dopowiem tylko, że w opisie brakuje info o dopisaniu przestrzeni nazw: System.Drawing i System.IO, pierwszego potrzebuje klasa Image, a drugiego Directory. Czekam na więcej! :) p.s. Dołączony kod programu nie ma opisanej obsługi licznika i wyjścia z programu na 3 sposoby ;)

m010ch 11 czerwca 2006, 1:11

Odwołuje p.s. - moje niedopatrzenie ;)

ConrPL 11 czerwca 2006, 16:47

A po co komou badziewny C# Microsoftu, skoro można używać dużo lepiej opisanego w necie, z darmowymi kompilatorami, szybszego, łatwiejszego C++? Chyba tylko po to, żeby stać się niewolnikiem tej korporacji.

m010ch 12 czerwca 2006, 10:00

ConrPL: Sio trollu, o starych technologiach przelewaj swoje wypociny na bzdurnych forach, których w internecie nie brakuje dla takich zakompleksionych typów.

anomo 7 czerwca 2007, 13:26

jak się tworzy "obsługę zdarzenia FormLoad"?

anomo 7 czerwca 2007, 13:41

już wiem o co chodzi,sorki

Dawid 30 sierpnia 2007, 15:59

wykorzystajcie darmowe środowisko SharpDevelop 2.2

matrix0123456789 11 września 2007, 20:09

Visual studio express też jest darmowy, a do CornPL: c++ wymyślono w latach 70, a C# chyba 2005 zy coś koło tego.

Adrian 4 października 2007, 20:20

@ConrPL Nigdy nie programowałeś w C#..... Apropo C++ (używałem go 3 lata) 1. Jest trudny !!! 2. Podatny na błędy 3. Aplikacje pisze się średnio 10x wolniej niż np w C# C++ to naprawdę fajny i potężny język jednak ...nie nadaje się do projektowania aplikacji okienkowych nowego typu. Nie można wymyślać koła za każdym razem gdy buduje się nowy pojazd a tak programuje się w C++.

Astaz3l 13 grudnia 2007, 14:21

Prosty i fajny projekt!

Trolek 13 stycznia 2008, 2:04

Jakimiś głupotami sie zajmujecie :/ powiedzcie mi jak wypełnić progressbar np w ciągu 10 sekund ? bo kurde jakieś intervale ustawiam na 5000 i nic, wszystko działa w mgnieniu oka a chce żeby progressbar zapełnił się do 100 na niebiesko ale w ciągu tych 10 sekund po naciśnięciu przycisku. co mi po milisekundach ? tylko zaśmiecają zrozumienie programowania:/ Będę wdzięczny za pomoc. wyzyna.troli@poczta.fm

Trolek 13 stycznia 2008, 2:05

Acha tak dla jasności pisze w C# VS 2005

Sebek 20 stycznia 2008, 7:47

Takie nijakie, ale jak ktoś dopiero zaczyna "bawić się" C#, to jeszcze jako tako ujdzie. Przede wszystkim mało kto będzie robił taki wygaszacz bo nie jest zbyt praktyczny.

rs232c 11 września 2009, 4:47


kto zna proste otwieranie i zamykanie portu COM1?
Proste czytanie znaków z portu do pliku i na ekran formularza...
Proste wysyłanie stringu kilku znaków do portu szeregowego...
a.Visual Studio .net 2003
b.VS2005 Express version
c.VS2008 Professional (student licence)

Xardas 24 października 2009, 18:33

Z całym szacunkiem ale C++ to stary shit

Kościak 25 listopada 2009, 14:22

Czyli co jest lepsze? C# czy C++??? Bo ja niewiem a dopiero zaczynam pracę...

kamcio1 25 grudnia 2011, 21:56

NIE MA(!) lepszego języka wysokopoziomowego niż C++ (jeśli się mylę, to mnie poprawcie)! Jednak, początkującym polecam C#, a potem przejście na C++. Przy użyciu standardowych bibliotek, C++ staje się łatwiutkie! Ale przy okienkach, polecam C#.


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2012 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plXboxSpot.pl  |  Jama Mastaha