2012-02-09 16 views
6

मैं निम्नलिखित XAML कोड:छवि फैला और केंद्रित?

<Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 

और मैं, नेत्रहीन, यह मिल गया:

: Stretch="None" साथ

enter image description here

(http://img810.imageshack.us/img810/2401/imagestretchuniform.png)

, मैं यह मिल गया

enter image description here

(http://img28.imageshack.us/img28/1783/imagestretchnone.png)

अब, Stretch="Uniform" साथ लंबवत या क्षैतिज छवि केंद्र के लिए क्या मैं चाहता हूँ है! केवल "सबसे छोटी" पक्ष (Uniform के साथ) केंद्र केंद्रित होगी, दाएं। लेकिन इस समय, के रूप में आप स्क्रीनशॉट पर देख सकते हैं, छवि बस ऊपरी-बाएं कोने में डाल दिया जाता है, भले ही मैं "Center"

करने के लिए HorizontalAlignment और VerticalAlignment परिभाषित मुझे क्या करना चाहिए?

पूरे कोड है:

<UserControl [...]> 
    <Canvas Width="640" Height="480" Background="#FF881607"> 
     <Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 
    </Canvas> 
</UserControl> 

संपादित करें (समाधान): शायद ज़रुरत some1 में एक ही समस्या है, यहाँ है मैं इसे कैसे हल हो:

<Canvas Width="640" Height="480" Background="#FFAA00FF" > 
    <Image Source="z.jpg" Height="480" Width="640"/> 
</Canvas> 

यह बिल्कुल वैसा ही है व्यवहार HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform" छवि एक समान तक फैली हुई है (चाहे छवि कैनवास से छोटी या बड़ी हो) और यह लंबवत और क्षैतिज दोनों केंद्रित है!

+0

तुम भी आसपास के Xaml पोस्ट कर सकते हैं:
बस एक ग्रिड का उपयोग करें? शायद छवि का एक अभिभावक केंद्रित या विस्तारित नहीं है। – Botz3000

+0

इसे प्रश्न में जोड़ा गया! –

उत्तर

7

यदि आप इसे ग्रिड में डालते हैं तो यह स्वचालित रूप से केंद्रित हो जाएगा।

<Grid> 
    <Image Source="a.jpg"/> 
</Grid> 

कुछ और ग्रिड के साथ पूरा नियंत्रण:

<UserControl> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Image Source="a.jpg" Stretch="Uniform"/> 
     </Grid> 
     <Grid Grid.Row="1" Margin="10"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <Button Grid.Column="0" Content="Start"/> 
      <Button Grid.Column="2" Content="Stop"/> 
     </Grid> 
    </Grid> 
</UserControl> 
+0

काम नहीं करता है अगर मैं सिर्फ ग्रिड के साथ छवि को आत्मसमर्पण करता हूं और मैं अपने कैनवास या मेरे पूरे उपयोगकर्ता नियंत्रण के चारों ओर ग्रिड का उपयोग नहीं करना चाहता ... वास्तव में, मैं ग्रिड का उपयोग नहीं करना चाहता हूं। हो सकता है कि अगर मुझे सिर्फ छवि को आत्मसमर्पण करना है, लेकिन वास्तव में यह मामला नहीं है –

+0

मेरा संपादित उत्तर देखें कि आप वांछित लेआउट कैसे प्राप्त कर सकते हैं। आपको कैनवास का बिल्कुल उपयोग नहीं करना चाहिए। – Clemens

+0

यह आम तौर पर उस तरह का कोड है जिसका मैं उपयोग नहीं करना चाहता! इस समय मेरे पास एक साफ एक्सएएमएल कोड है और मैं पंक्तियां बनाना नहीं चाहता हूं; कॉलम, टेम्पलेट्स और इस तरह की चीजें:/ –

6

कैनवास छवि के HorizontalAlignment समर्थन नहीं करता। यदि आप इस तरह गतिशील लेआउट चाहते हैं, तो कैनवास एक खराब विकल्प है (यदि आप वास्तव में ऐसे लेआउट को अनदेखा करना चाहते हैं तो यह उपयोगी है)। कैनवास का उपयोग करने का सटीक कारण क्या है?

<Grid Background="#FF881607"> 
    <Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 
</Grid> 
+0

मैंने अपने प्रश्न को समाधान के साथ संपादित किया! –