2009-02-23 39 views
9

Tôi đã tạo một ứng dụng winforms khá lạ mắt cho công ty của mình. Chúng tôi đã có một nhà thiết kế đồ họa tạo GUI, đó là một nỗi đau để thực hiện, tất cả các nút đồ họa, nhiều hình nền và logo, hình động, v.v.Đồ họa mẫu ứng dụng .NET winforms

Nhưng bây giờ công ty của tôi muốn bán lại dưới các nhãn hiệu khác nhau. Nhưng kể từ khi tôi chủ yếu là mã hóa nó tốt, tôi nói với up của tôi cao hơn tôi có thể có một phiên bản hoàn toàn thương hiệu thực hiện trong dưới một tuần. Về cơ bản tất cả những gì tôi sẽ làm là thay đổi một loạt các thiết lập trong một tập tin cài đặt xml, trao đổi đồ họa với một bộ mới, và xây dựng.

Vấn đề là nếu họ muốn 5 hoặc 6 thương hiệu khác nhau, tôi muốn có 5 khác nhau được xây dựng để hỗ trợ (Tôi thực sự cần được hỗ trợ 1, với các mẫu khác)

Vấn đề là nó không dễ dàng (như xa như Tôi biết) để trao đổi những hình ảnh trong một ứng dụng winforms. Tôi có tất cả các tài nguyên đồ họa trong một thư mục, nhưng một khi mỗi tệp được nhập vào danh sách hình ảnh tương ứng hoặc vùng chứa trong studio trực quan, cách duy nhất để cập nhật là xóa nó và thêm lại, thay đổi thư mục nguồn không làm cho hình ảnh được nhúng để làm mới. Điều này sẽ vô cùng tẻ nhạt cho mỗi công trình xây dựng, phải có một cách dễ dàng hơn.

Thêm vào:
Vì vậy, sau khi điều tra thêm, tôi nghiêng về phía trước một số loại trình chỉnh sửa tệp resx. Tuy nhiên, những cái mà tôi đã thấy cho đến nay tập trung nhiều hơn vào việc dịch chuỗi sang các ngôn ngữ khác nhau, hoặc rất yếu, hoặc không thể chỉnh sửa tất cả các tài nguyên nhị phân như bitmap/png. Mặc dù nếu bạn mở tệp resx trong trình xem xml (tôi sử dụng notepad 2 có .resx để sử dụng xml sytax highlighting) MS là loại đủ để cho bạn biết chính xác cách mỗi loại được biên dịch (chủ yếu là các biến thể của cơ sở 64)

+2

quá xấu bạn đang làm winforms, đây sẽ là bánh trong WPF. –

+0

Ứng dụng đã được bắt đầu cách đây hơn một năm, sử dụng rất nhiều mã được nhập từ một phiên bản mà chúng tôi đã thực hiện gần 4 năm trước. Thật không may tôi không thấy chúng tôi chuyển sang WPF lần này. –

Trả lời

12

Tôi nghĩ mục tiêu của bạn phải có tệp tài nguyên "có thể thương hiệu"; về cơ bản bạn đang bản địa hóa ứng dụng của mình, ngoại trừ bạn chỉ có một vài phiên bản tiếng Anh khác nhau.

Bạn có thể sử dụng ResGen.exe và ResourceManager để tải tệp tài nguyên bên ngoài, vì vậy bạn có thể sử dụng 5 tệp "tài nguyên" khác nhau nhưng vẫn giữ nguyên mã cơ sở của mình.

bài này cũng có thể giúp ... http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b388c700-0e07-452b-a19e-ce02775f78a6/

Edit: BTW, tôi sẽ thứ hai nhận xét rằng nếu bạn đang trải qua rất nhiều nỗ lực về vấn đề này, hãy xem xét WPF ... Hầu hết các của những yếu tố "đồ họa" này có thể được thực hiện một cách tự nhiên, đặc biệt nếu đó là gradient và các công cụ, chưa kể đến việc tạo khuôn mẫu dễ dàng.

+0

WPF sang một bên, tôi không chắc chắn đây là những gì tôi đang tìm kiếm, tôi vẫn không phải thêm từng hình ảnh riêng lẻ vào tệp tài nguyên thay thế? Tôi đang tìm kiếm anh chàng đồ họa sửa đổi tất cả các hình ảnh trong một thư mục, sau đó trao đổi thư mục đó cho thư mục hiện tại của tôi trước khi xây dựng. –

-2

Tôi nghĩ bạn nên suy nghĩ về việc tạo điều khiển người dùng cho các khu vực có thể thay thế động của biểu mẫu. Trong thời gian chạy, bạn có thể hoán đổi một bộ phận khác.

+0

Đó là một ý tưởng khủng khiếp. MỌI MỌI là đồ họa. Và tôi muốn giữ mã ở một nơi độc thân. Việc tạo ra các hội đồng mới cho mỗi công trình xây dựng sẽ khiến tôi tồi tệ hơn tôi bây giờ. –

+0

Tôi nghĩ bạn có nghĩa là một hình ảnh tiêu đề. Tôi đề xuất bạn tạo một điều khiển người dùng riêng biệt, với hình ảnh dưới dạng tài nguyên được nhúng và sau đó tự động tải điều khiển thích hợp khi chạy. Mỗi thương hiệu sẽ có lắp ráp tiêu đề của riêng mình. Nếu bạn có hình ảnh rùng mình, đây không phải là cách để đi. –

0

Điều tôi sẽ làm là tải tất cả đồ họa của đĩa vào lúc khởi động từ một thư mục và tạo bất kỳ người tưởng tượng nào cần thiết, thay vì làm điều này trong nhà thiết kế. Nếu bạn lo lắng rằng ai đó sẽ ăn cắp đồ họa, thì tôi sẽ tạo một định dạng tệp đơn giản (có thể được mã hóa) cho đồ họa của tôi và một ứng dụng đơn giản nhỏ để bạn hoặc nhà thiết kế sử dụng để chuyển đổi thành định dạng này từ các tệp thông thường. Sau đó, nó chỉ là một câu hỏi trao đổi thư mục này giữa các thương hiệu khác nhau.

0

Nếu hầu hết các biểu mẫu của bạn giống nhau (ví dụ: cùng một biểu trưng, ​​cùng một nút ở dưới cùng, v.v.), bạn có thể sử dụng visual inheritance trên WinForms để xác định tập hợp "Biểu mẫu cơ sở".

Nếu bạn phát triển một bộ "Biểu mẫu cơ sở" cho mỗi thương hiệu của bạn, mỗi nhóm được đặt trong một hội đồng riêng biệt, bạn có thể thực hiện công việc cần thiết để tạo thương hiệu mới.

Hy vọng nó giúp

0

Đó là quá muộn bây giờ, nhưng WPF sẽ là một lựa chọn tốt hơn so với WinForms, vì nó là dễ dàng hơn cho da.

Tuy nhiên, hãy xem những gì DevExpress làm cho WinForms, vì các điều khiển của chúng có hệ thống tạo lớp. Nó không phải là quá khó để trao đổi một điều khiển Winform winform cho một điều khiển winform tiêu chuẩn.

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