Jedna ikona dla formy i aplikacji

0

Witam. Korzystam z jednej ikony dwa razy:

  • ikona pliku EXE w zasobach
  • ikona formy (na pasku zadań)

Rozmiar pliku wykonywalnego rośnie dwukrotnie.

Co zrobić by nie ładować tej ikony dwa razy?

Próbowałem w Form1_Load wczytać ją z zasobów:

this.Icon = new Icon(
  Assembly.GetExecutingAssembly().GetManifestResourceStream("MyNamespace.MyFile.ico"));

to działa tylko kiedy ustawi się we właściwościach ikony Embedded Resource, ale wtedy i tak jest ładowana dwukrotnie :(

0

Jeżeli używasz tego sposobu, który napisałeś, to rozmiar EXE nie może wzrosnąć 2 razy. Jedynie zużycie pamięci, czy o pamięć podczas działania programu Ci chodziło? Jeżeli nie, upewnij się, że zostawiłeś w projekcie tylko jedną ikonę, a drugą ustawioną w ustawieniach projektu 'wyzerowałeś'

0

Witam. Dziękuję za odpowiedź.

TomaszSmykowski napisał(a)

Jeżeli używasz tego sposobu, który napisałeś, to rozmiar EXE nie może wzrosnąć 2 razy. Jedynie zużycie pamięci, czy o pamięć podczas działania programu Ci chodziło?

Nie chodzi mi o pamięć tylko o rozmiar EXEka.
Nie miało by to dla mnie znaczenia w przypadku Aplikacji Win32, ale w .NET ikona jest 10 razy większa od samego programu. Właściwie to nie wiem czy jest wczytana dwa razy, ale jak Build Action jest ustawione na Content to program ma 200KB a jak na Embedded Resource to ma ponad 350KB i dlatego mnie to drażni.

Jeżeli nie, upewnij się, że zostawiłeś w projekcie tylko jedną ikonę, a drugą ustawioną w ustawieniach projektu 'wyzerowałeś'

Visual C# 2008 Express Edition bawię się od wczoraj, więc nie wiem dokładnie czy wyzerowałem, ale jak ustawie jeszcze te samą ikonę dla formy (Icon we właściwościach Form1) to program ma prawie 500KB.

Jeśli natomiast usunę ikonę z Form1 i we właściwościach projektu (Application -> Resources) to wtedy jest tylko raz wczytana w zasobach (widać ją w lewym górnym rogu formy i na pasku zadań), ale nie ma jej dla pliku EXE. To znaczy w Eksploratorze plików dla tego pliku EXE widnieje domyślna ikona „braku ikony” (tak jak mają programy konsolowe).

[dopisane]

Jak się wyświetli listę zasobów przez GetManifestResourceNames to są następujące (200KB):

WindowsApplication1.Properties.Resources.resources (tu musi być jedna ikona)
WindowsApplication1.Form1.resources

A jak się ustawi Ikonę jako Embedded to dochodzi jeszcze (350KB):

WindowsApplication1.Ikona.ico (tu jest druga ikona)

I te drugą mogę wczytać, ale chciałem się dostać do tej głównej.

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