2012-01-23 42 views
13

Chúng tôi có dự án C# WPF (.NET 4.0, Visual Studio 2010). Nó đã được thử nghiệm trên cả Windows XP và Windows 7 và có vẻ hoạt động tốt, nhưng bây giờ tôi đã nhận được báo cáo từ hai khách hàng trên thực địa (cả hai đều ở Tây Ban Nha vì lý do nào đó) không thể khởi động phần mềm."Định dạng hình ảnh không được nhận dạng" tùy thuộc vào màn hình

Nhìn vào tệp nhật ký tôi thấy rằng họ nhận được "Ngoại lệ hình ảnh không được công nhận" ngoại lệ (Gây ra bởi: Ngoại lệ từ HRESULT: 0x88982F07).

Tôi đã googled về lỗi và tôi đã thấy rằng điều này có vẻ là WPF không tải biểu tượng PNG Vista trên Windows XP. Nhưng những báo cáo này là một vài năm tuổi, chắc chắn Microsoft đã giải quyết nó ngay bây giờ (?), Và trong trường hợp của tôi nó hoạt động tốt trên hầu hết các cài đặt XP. Tôi thực sự không muốn giới hạn sự xuất hiện biểu tượng trên Windows gần đây hơn.

Việc sử dụng phổ biến nhất ứng dụng của chúng tôi là trên Máy tính xách tay và một trong số người dùng đã báo cáo rằng khi kết nối máy tính xách tay với màn hình bên ngoài, sự cố đã được giải quyết. Và khi tôi yêu cầu người kia kiểm tra cùng một điều, anh ta cũng có kết quả tương tự.

Vì vậy, câu hỏi của tôi là: Bạn có biết vấn đề này đã được giải quyết bởi Microsoft không? Bạn có biết tại sao nó chỉ xảy ra trên một số phiên bản Windows XP và cách nó liên quan đến màn hình? Và quan trọng nhất, bạn có biết tôi có thể làm gì để làm cho ứng dụng của chúng tôi mạnh mẽ hơn mà không thay đổi biểu tượng?

+6

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9e723d51-0e26-4609-8fe1-5e0edcf7385b/ dường như chỉ ra nó sẽ giải quyết riêng của mình nếu bạn không nén biểu tượng. –

+0

Cảm ơn lời khuyên, tôi sẽ kiểm tra điều đó. Tôi đã tạo biểu tượng mà không cần nén, tệp biểu tượng nhận được lớn hơn 5 lần, nhưng đó không phải là vấn đề trong những ngày này (trừ khi có những hạn chế khác có biểu tượng không nén?). – Christoffer

+0

Không có bất lợi ngoài kích thước mà tôi biết. –

Trả lời

2

Tôi đã có lỗi tương tự ngày hôm nay, ngoài màu xanh và chỉ trên máy phát triển của tôi. Việc thực hiện WPF dường như vẫn còn lỗi.

Nếu tôi hiểu điều này (article) bên phải, nó có thể xảy ra ở mọi nơi tệp ICO được đọc. Trong trường hợp của tôi đó là khi thiết lập một biểu tượng cho cửa sổ ứng dụng chính trong XAML:

<Window x:Class="MyApp.MainWindow" Icon="Dashboard.ico" > 

Đoạn mã trên thất bại bất ngờ, nhưng sử dụng một tập tin PNG giải quyết vấn đề:

<Window x:Class="MyApp.MainWindow" Icon="Dashboard.png" > 
0

Tôi đã có một chút vui vẻ với vấn đề này sáng nay. Nó chỉ ra rằng lỗi đã xảy ra chỉ trên các máy XP, nơi các thiết lập màu được thiết lập là 16 bit, và khi tôi thay đổi nó thành 32-bit, vấn đề biến mất một cách kỳ diệu.

Điều này áp dụng cho XP (bao gồm cả Embedded) SP3.

0

vấn đề này đã khiến tôi kéo tóc ra khá lâu, và tôi đã dành khá nhiều thời gian để tìm hiểu điều gì đang xảy ra, vì vậy tôi sẽ chia sẻ kết luận của mình vì nó có thể giúp người khác (thậm chí có thể bản thân mình trong tương lai):

  • vấn đề này xuất hiện chủ yếu trên windows XP và/hoặc khi kết nối qua máy tính để bàn từ xa (đặc biệt là trên cửa sổ máy chủ). Nhưng nó là loại ngẫu nhiên và không thể sao chép vào mục đích

  • các liên kết này cung cấp một lời giải thích tốt cũng như một giải pháp/cách giải quyết: http://code.logos.com/blog/2008/08/image_format_error_when_loading_from_a_stream.html https://github.com/LogosBible/Logos.Utility/blob/master/src/Logos.Utility/IO/RebasedStream.cs

  • sử dụng một file png trực tiếp sẽ làm việc, nhưng nó có những hạn chế của nó (ví dụ, tôi sử dụng các tệp .ico để có nhiều hình ảnh tùy thuộc vào kích thước của biểu tượng được hiển thị và tệp .png không thể thay thế a.tập tin ico cho mục đích này)

  • câu trả lời tốt nhất - và những gì tôi đã kết thúc làm - là những gì Joachim nói trong bình luận của ông về câu hỏi của OP:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e723d51-0e26-4609-8fe1-5e0edcf7385b/setting-windowicon-to-vista-256x256-png-icon-causes-a-fileformatexception?forum=wpf dường như chỉ ra nó' sẽ tự giải quyết nếu bạn không nén biểu tượng. - Joachim Isaksson23 Tháng 1 '12 tại 12:44

vì vậy tôi nhìn lên trong IcoFX (mà tôi sử dụng để chỉnh sửa biểu tượng của tôi) và đủ chắc chắn:

options window in icoFx

Tôi chỉ đơn giản là bỏ chọn này và lưu lại .ico của tôi một lần nữa (kích thước đi từ 30Kb lên đến 286Kb trong quá trình!) Và voilà!

vấn đề giải quyết

Các vấn đề liên quan