2012-09-12 16 views
10

Mam aplikację WPF, która działa poprawnie na systemie operacyjnym Windows 7. Ale ta sama aplikacja ulega awarii na niektórych komputerach z systemem Windows XP.Aplikacja WPF pokazuje "Format obrazu jest nierozpoznany"

Działa dobrze na kilku komputerach z systemem Windows XP. ale na kilku maszynach XP nie uruchamia się.

BŁĄD - Format obrazu jest nierozpoznany.

Wiem, że to pytanie zostało zadane kilka razy. ale mój problem jest nadal nie jestem w stanie dowiedzieć się, jak rozwiązać ten problem.

powinienem zmienić .ico wykorzystuje się do zastosowania ..

Odpowiedz

2

Jeśli dobrze pamiętam Windows XP nie obsługuje ikony większe niż 48x48 pixels i to może być przyczyną wypadku. Pliki .ico powinny zdecydowanie działać na obu systemach.

Możesz utworzyć ikonę obsługującą wiele rozmiarów, więc jeśli dodasz 48x48 i na przykład 256x256 w tym samym pliku, powinieneś być dobry. Upewnij się również, aby wybrać dobre oprogramowanie, aby utworzyć ikonę podczas tworzenia ikon obsługujących wiele rozmiarów. Użyłem Greenfish Icon Editor, co moim zdaniem działa dobrze. Ale istnieje mnóstwo innych produktów do tego.

Należy przeczytać The ICON handbook, section Windows, zawiera on dobre informacje na temat rozmiarów ikon i głębokości bitów.


Inne wątki na SO obsługuje moje przekonanie:

problems with icon image

Which icon sizes should my Windows application's icon include?

+0

dzięki @Avada Kedavra .. ale działa całkowicie w porządku na kilku maszynach .. czy ma coś wspólnego z rozdzielczością? Rozdzielczość – Sandepku

+0

. Brzmi to daleko idące. ale tak naprawdę nie wiem. –

+0

Błąd był z ikoną 256X256 .. teraz działa dobrze .. dzięki za linki .. doceń to .. – Sandepku

10

Niestety, po prostu usunięcie aplikacji 256x256 nie jest największy rozwiązanie, gdy chcemy wspierać dużą ikonę rozmiar dla Windows Vista, 7, 8 i do przodu.

Innym sposobem rozwiązania tego problemu ... jest nieskompresowanie obrazu 256x256 na ikonie. Więcej informacji można znaleźć pod numerem forum thread.

Jak to zrobić? Cóż, większość narzędzi ikonowych będzie miała do tego opcję (ponieważ jest to powszechny problem). Używam IcoFX, a poniżej widoczna jest opcja (zaznaczona na czerwono), którą trzeba było wyczyścić.

IcoFX Screenshot

+0

Moje podziękowania dla tego posta (http://stackoverflow.com/questions/8971751/the-image- format-jest-nierozpoznany-zależny od monitora), który miał odpowiedź z odnośnikiem forum w nim ... który był oryginalną inspiracją/rozwiązaniem. – cplotts

+1

Kompresja robi wielką różnicę, moja ikona zmieniła się z 39kb na 288kb. – tofutim

+0

@tofutim, tak, to jest poprawne .. ale jest to konieczne, jeśli chcesz wspierać system Windows XP. – cplotts

2

W aplikacji WPF będzie mieć co najmniej dwa miejsca, aby ustawić ikony:

  1. ikonę aplikacji. Służy do wyświetlania aplikacji w Eksploratorze, na pulpicie itp. Ustawiono to we właściwościach projektu.
  2. Ikona okna. Jest on używany jako ikona w lewym górnym rogu okna, a może dla alt-tabowania i na pasku zadań. Ustawiasz to jako właściwość Icon w oknie.

Często można użyć tego samego pliku ikony w obu przypadkach. Jednakże, jeśli ikona skompresowanego 256x256 jest ikoną okna, może to spowodować awarię systemu Windows XP. To właśnie doświadczasz.Z drugiej strony nie dzieje się tak, gdy ikona aplikacji ma skompresowaną ikonę 256x256.

Innym rozwiązaniem (które zaimplementowałem we wszystkich moich projektach) jest posiadanie dwóch ikon: ikony aplikacji (która zawiera wszystkie rozmiary) oraz specjalnej wersji "ikony okna", która zawiera tylko rozmiary 16x16 i 32x32 (ponieważ są to jedyne rozmiary, które są używane).

6

Dziś rano miałem trochę zabawy z tym problemem. Okazało się, że błąd wystąpił tylko na maszynach XP, w których ustawienia kolorów zostały ustawione na 16 bitów, a kiedy zmieniłem go na 32-bitowy, problem znikał w magiczny sposób.

Dotyczy XP (w tym Embedded) SP3.

+0

+1 Dobra obserwacja. Uratowałeś mój dzień :). Pomogło mi to zrozumieć, że sesja RDP z 16-bitowym kolorem spowodowała awarię mojej aplikacji, chociaż udało mi się uruchomić ją z sesji VNC, która miała 32-bitowy kolor. – kiran

0

Innym obejście problemu (rozdzielczość 16/32bit) nie jest zdefiniowanie ikonę w XAML, ale załadować go w kodzie:

this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));