2011-12-02 11 views
5

मैं एक कस्टम वाईएक्स संवाद लिखने की कोशिश कर रहा हूं, जो इसके वर्कफ़्लो के हिस्से के रूप में, कुछ स्थितियों के जवाब में एक त्रुटि छवि दिखाता है। हालांकि, वाईएक्स मेरे आयामों को अनदेखा कर रहा है और इसे प्रदर्शित करने के रूप में प्रदर्शित होता है।वाईएक्स सही ढंग से छवियों को प्रतिपादित नहीं कर रहा है

<Binary Id="WixUI_FailureImg" SourceFile="$(sys.SOURCEFILEDIR)..\Resources\Failure.ico" /> 
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="206" Width="16" Height="16" Text="WixUI_FailureImg"> 
    <Condition Action="hide">LOGON_VALID = "1"</Condition> 
    <Condition Action="show">LOGON_VALID = "0"</Condition> 
</Control> 

मैं नीचे प्रदर्शित होने वाले का एक टुकड़ा है, पृष्ठभूमि में मूल छवि (एक 16x16 .ico) के साथ शामिल किया है: यहाँ मेरी कोड है। जैसा कि आप देख सकते हैं, छवि को ऊपर की ओर बढ़ा दिया गया है, और छवि के चारों ओर कोई पारदर्शिता नहीं है। मैंने 8-बिट और 24-बिट बिटमैप्स के साथ-साथ आइकन भी आज़माए हैं, लेकिन वे सभी एक ही परिणाम उत्पन्न करते हैं। क्या ऐसा कुछ है जो मैं स्पष्ट रूप से गलत कर रहा हूं?

example of borked image

अद्यतन:

<Control Id="TestResult_Success" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_SuccessImg"> 
    <Condition Action="hide">LOGON_VALID = "0"</Condition> 
    <Condition Action="show">LOGON_VALID = "1"</Condition> 
</Control> 
<Control Id="TestPrompt_Success" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionValid)"> 
    <Condition Action="hide">LOGON_VALID = "0"</Condition> 
    <Condition Action="show">LOGON_VALID = "1"</Condition> 
</Control> 
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_FailureImg"> 
    <Condition Action="hide">LOGON_VALID = "1"</Condition> 
    <Condition Action="show">LOGON_VALID = "0"</Condition> 
</Control> 
<Control Id="TestPrompt_Failure" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionInvalid)"> 
    <Condition Action="hide">LOGON_VALID = "1"</Condition> 
    <Condition Action="show">LOGON_VALID = "0"</Condition> 
</Control> 

आप स्क्रीनशॉट से अनुमान लगा सकते हैं, पेज:

यदि आप सोच रहे थे कि कैसे गतिशील छवियों काम करता है, यहाँ प्रासंगिक अनुभाग है एक एसक्यूएल कनेक्शन स्थापित करने से संबंधित है; मेरे पास एक कस्टम एक्शन है जो उपयोगकर्ता के इनपुट के आधार पर कनेक्शन स्ट्रिंग बनाता है, और इसे सत्यापित करने का प्रयास करता है। यदि यह मान्य है (LOGON_VALID = "1"), मुझे एक टिक छवि मिलती है और कुछ पाठ कहने के लिए कुछ पाठ अच्छा होता है, अन्यथा मुझे चेतावनी आइकन और उपयोगकर्ता को चेतावनी देने के लिए कुछ पाठ मिलता है। बेशक, अगला बटन भी इस मान से नियंत्रित होता है।

+0

एक अलग प्रश्न पूछना .. जानने के लिए उत्सुक..क्या आप छवि को गतिशील रूप से बदल रहे हैं? मेरा मतलब है कि छवि इस शर्त के अनुसार दिखाई देगी? –

+0

हां; तो एक testResult_Success नियंत्रण है जो LOGON_VALID = 1 पर एक हरा टिक दिखाता है, और LOGON_VALID = 0. अगर इसे छुपाता है तो छवियां समान आकार और उसी स्थान पर हैं। –

+0

क्या आप छवि को गतिशील रूप से अद्यतन करने के लिए कुछ कोड साझा कर सकते हैं? –

उत्तर

5

एक्स, वाई, चौड़ाई, और ऊंचाई "इंस्टॉलर इकाइयों" में हैं, पिक्सल नहीं। इंस्टॉलर इकाइयों को पिक्सल में कनवर्ट करना दृश्य थीम, फ़ॉन्ट आकार और डीपीआई सेटिंग्स पर निर्भर करता है। आपकी सबसे अच्छी शर्त यह डिफ़ॉल्ट सेटिंग्स पर अच्छा दिखाना है।

+2

यह शर्म की बात है कि वाईएक्स दस्तावेज यह स्पष्ट नहीं करता है। अंत में, मैंने केवल मूल्यों की एक श्रृंखला का प्रयास करने का प्रयास किया, और पाया कि मेरी 16x16 छवि के लिए, चौड़ाई और ऊंचाई को 12 तक सेट करना, और 16 पर आइकन आकार को छोड़कर, इच्छित परिणाम (डिफ़ॉल्ट दृश्य थीम/फ़ॉन्ट आकार/डीपीआई सेटिंग्स, जैसा कि आप नोट करते हैं)। –

+0

@ डेविडकिवेनी मुझे अपने वाईएक्स यूआई में सेट किए गए 1.3333333 बार मेरी छवि को भी स्केल करना पड़ा। यह इतना हास्यास्पद कदम था (http://stackoverflow.com/questions/28997742/how-do-you-optimize-a-jpeg-image-for-msi-installers/29012944#29012944) वापस पोस्ट करने के लिए बहुत बहुत धन्यवाद आपके लिए क्या काम किया है, डेविड। इससे मुझे काफी मदद मिली। – Alexandru

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