2009-02-20 10 views
9

मैंने देखा कि मेरा ऐप विंडोज ट्रे में 16x16 पिक्सेल के आकार के साथ आइकन भेजता है - और मेरे विस्टा पीसी में मुझे डबलव्यू टास्कबार मिला है जो 18x18 पर आइकन दिखाने के लिए प्रतीत होता है। मेरे ऐप के आइकन पर आकार बदलने वाले कलाकृतियों को भयानक लग रहा है। मैं विंडोज से कैसे पूछ सकता हूं कि आइकन किस आकार का होना चाहिए?मैं सिस्टम ट्रे आइकन के आकार के लिए विंडोज से कैसे पूछूं?

संपादित करें:

मैं गतिशील आइकन पैदा कर रहा हूँ, एक पिक्सेल फ़ॉन्ट पाठ ओवरले के साथ। यह गतिशील रूप से आइकन आकारों का एक समूह उत्पन्न करने के लिए अपर्याप्त लगता है, इसलिए सभी "संभावित" आकारों के साथ आइकन बनाने से बचना अच्छा होगा (यह भी कि मुझे यह भी यकीन है कि वे क्या हैं)।

GetSystemMetrics (SM_CXSMICON) 16 लौटाता है - गलत मान।

GetThemeBackgroundContentRect ने मदद नहीं की, या तो।

उत्तर

0

कई प्रारूपों में अपने आइकन बनाएं, और विंडोज़ को वह इच्छित व्यक्ति चुनने दें।

Here's the Wikipedia article on the .ico format.

तुम सच में पता करने की जरूरत है, तो GetSystemMetrics SM_CXICON या SM_CYICON की एक पैरामीटर के साथ आप चौड़ाई और ऊंचाई विंडोज लोड करने के लिए चाहता है कि बता देंगे।

+3

इस उत्तर का पहला भाग केवल गलत है। अधिसूचना आइकन के लिए API 'Shell_NotifyIcon' है। उसमें 'नोटिफ़िकोडाटा' प्राप्त होता है जिसमें 'HICON' होता है। अब, एक 'HICON' एक आइकन को संदर्भित करता है, इसलिए आपको' Shell_NotifyIcon' पर कॉल करने से पहले आकार का निर्धारण करना होगा। अंतिम पैराग्राफ हालांकि सटीक है। –

1

मार्क का मूल उत्तर सही है: एकाधिक प्रारूपों में अपने आइकन बनाएं और विंडोज को सही चुनने दें। HighDPI परिदृश्यों के लिए 32x32 और 64x64 आइकन करना न भूलें।

लेकिन SM_CXICON/SM_CYICON आवश्यक रूप से उस आकार को वापस नहीं करेगा जो टास्कबार में उपयोग किया जाएगा। टास्कबार इसके आकार के लिए सही आइकन आकार चुनता है (यह विंडो 7 में अधिक महत्वपूर्ण है)।

बस उचित आकार के आइकन प्रदान करें और आपको ठीक होना चाहिए।

+2

मुझे लगता है कि मुझे उल्लेख करना चाहिए था: मैं एक पिक्सेल फ़ॉन्ट पाठ ओवरले के साथ गतिशील रूप से आइकन उत्पन्न कर रहा हूं। यह गतिशील रूप से आइकन आकारों का एक समूह उत्पन्न करने के लिए अपर्याप्त लगता है। GetSystemMetrics (SM_CXSMICON) 16 लौटाता है - फिर गलत मान। – keelo

+1

दुर्भाग्यवश कि जानकारी मेरा उत्तर नहीं बदलती है - आपको अभी भी कई आइकन आकारों का उत्पादन करने की आवश्यकता है। या बस 256x256 आइकन बनाएं और सिस्टम को आपके लिए स्केल करें। –

+1

पिक्सेल फोंट के साथ 256x256 जेनरेट करने के परिणामस्वरूप आइकन को 16x16 पर याद किया जाता है, दुर्भाग्यवश। – keelo

0

आपकी सर्वश्रेष्ठ शर्त GetThemeBackgroundContentRectTBN_BACKGROUND गुजरने के लिए पृष्ठभूमि को सूचित करने के लिए iPartId के रूप में हो सकती है।

GetThemeBackgroundContentRect को वर्तमान विषय द्वारा परिभाषित आकार को वापस करना चाहिए जिसका उपयोग मूल तत्व की सीमाओं को ओवरलैप किए बिना चित्रित करने के लिए किया जा सकता है। अगर मैं इसे सही तरीके से पढ़ रहा हूं, तो यह सबसे बड़ा आकार का अधिसूचना आइकन स्वीकार्य होगा और संभावित रूप से आकार का उपयोग किया जा रहा है।

एकाधिक डीपीआई सेटिंग्स के साथ परीक्षण शायद यह बताने का सबसे आसान तरीका है कि यह सही मूल्य लौटा रहा है या नहीं।

+3

TThe_BACKGROUND के साथ GetThemeBackgroundContentRect ट्रे आइकन आकार बदलने के साथ भिन्न नहीं था। – keelo

संबंधित मुद्दे