2011-07-07 11 views
10

मैं विंडोज फोन 7 मैंगो बीटा 2 विकास उपकरण के साथ फोटोकैमेरा नियंत्रण का उपयोग कर रहा हूं।विंडोज फोन 7 के साथ व्यूफिंडर अभिविन्यास 0 मैंगो फोटोकैमेरा

कैमरा नियंत्रण के लिए "दृश्यदर्शी", एक आयत एक VideoBrush से भरा वस्तु है, उदाहरण के लिए यहाँ के रूप में:

http://msdn.microsoft.com/en-us/library/hh202956%28v=VS.92%29.aspx

मेरे समस्या यह है कि जब मैं अपने फोन पर अनुप्रयोग चलाने, व्यूफिंडर छवि हमेशा 9 0 डिग्री घुमावदार घुमावदार दिखाती है। यह मामला कोई फर्क नहीं पड़ता कि फ़ोन कैसे स्थित है।

क्या कोई जानता है कि मैं व्यूफ़ाइंडर को सही तरीके से कैसे उन्मुख कर सकता हूं?

+2

क्या आपने SuppoertedOrientations = "PortraitOrLandscape" सेट किया है? –

+0

मैंने इसे पोर्ट्रेट –

+0

पर सेट किया है इसका मतलब यह है कि यदि आप इसे PortraitOrLandscape पर सेट करते हैं तो इससे कोई फर्क नहीं पड़ता है? –

उत्तर

9

हाँ, उन्मुखीकरण कुछ आप रूपांतरण एक रिश्तेदार के साथ प्रबंधित कर सकें है:

<!--Camera viewfinder >--> 
<Rectangle Grid.Row="1" 
      x:Name="preview"> 
    <Rectangle.Fill> 
    <VideoBrush x:Name="previewBrush"> 
     <VideoBrush.RelativeTransform> 
     <CompositeTransform x:Name="previewTransform" 
          CenterX=".5" 
          CenterY=".5" /> 
     </VideoBrush.RelativeTransform> 
    </VideoBrush> 
    </Rectangle.Fill> 
</Rectangle> 

तो फिर तुम निर्धारित करने के लिए आप इसे कैसे घुमाना चाहते photocamera वर्ग का उपयोग कर सकते हैं:

double cameraRotation = theCamera.Orientation; 

// Use the orientation to determine how to transform 
// the camera preview 
previewTransform.Rotation = theCamera.Orientation + 90.0; // Landscape? 

HTH

+0

लेकिन यह 4: 3 छवि ले जाएगा और तस्वीर को विकृत करने के लिए 3: 4 फ्रेम फिट करने के लिए इसे स्क्विश करेगा ... – xster

2

आप यह सोचते हैं आप पोर्ट्रेट मोड में कर रहे हैं, इतना कोड क्या करने की जरूरत नहीं है, बस फोन:

viewfinderBrush.RelativeTransform 
    = new CompositeTransform() { CenterX = 0.5, CenterY = 0.5, Rotation = 90 }; 

लेकिन निश्चित रूप से, दृश्यदर्शी के लिए आप जो भी अभिविन्यास उपयोग करते हैं, परिणामी छवि अभी भी परिदृश्य में है! क्या किसी को पता है कि इसे कैसे ठीक किया जाए?

+0

धन्यवाद यह सही काम करता है। – Nirus

4

जवाब के लिए और अधिक स्पष्टीकरण जोड़ना: एक बात प्रलेखन का वर्णन करता है कि यहाँ उल्लेख नहीं है कि रिश्तेदार को बदलने OnOrientationChanged स्थिति में समायोजित किया जाता है है। एक और अंतर यह है कि सापेक्ष परिवर्तन XAML में निर्दिष्ट नहीं है।

डॉक्स (How to: Create a Base Camera Application for Windows Phone) में, आयत videobrush साथ इस प्रकार भर जाता है:, में

<!--Camera viewfinder >--> 
<Rectangle Width="640" Height="480" 
      HorizontalAlignment="Left" 
      x:Name="viewfinderContainer"> 

    <Rectangle.Fill> 
     <VideoBrush x:Name="viewfinderBrush" /> 
    </Rectangle.Fill> 
</Rectangle> 

तो कोड-पीछे, OnOrientationChanged घटना आयत रुचि के आधार पर घूमता है:

// Ensure that the viewfinder is upright in LandscapeRight. 
    protected override void OnOrientationChanged(OrientationChangedEventArgs e) 
    { 
     if (e.Orientation == PageOrientation.LandscapeRight) 
     { 
      viewfinderBrush.RelativeTransform = 
       new CompositeTransform() { CenterX = 0.5, CenterY = 0.5, Rotation = 180 }; 
     } 
     else 
     { 
      viewfinderBrush.RelativeTransform = 
       new CompositeTransform() { CenterX = 0.5, CenterY = 0.5, Rotation = 0 }; 
     } 

     base.OnOrientationChanged(e); 
    } 

इस विषय में कोड (जो नमूना के अनुरूप है) केवल लैंडस्केप ओरिएंटेशन का उपयोग करने के लिए कॉन्फ़िगर किया गया है, शायद यही कारण है कि आप केवल लैंडस्केप छवियां प्राप्त कर रहे हैं (?) शुरुआत में, निम्न विशेषताओं को फ़ोन में जोड़ा गया है: फोन एप्लिकेशंस पेज ई MainPage.xaml में lement:

SupportedOrientations="Landscape" Orientation="LandscapeLeft" 

आप अभी भी गलत तरीके से केंद्रित छवियों मिल रहे हैं, अपने पीसी के लिए अपनी छवियों को सिंक और वे सही ढंग से उन्मुख कर रहे हैं उन्हें वहाँ देखते हुए (अपने पीसी पर) देखें। यह बीटा के साथ एक बग हो सकता है जो छवि को डिवाइस पर सही ढंग से दिखाई नहीं दे रहा है।

आशा है कि मदद करता है। चीयर्स

0

हां, मैंने ऑनऑरिएंटेशन चेंज-इवेंटहाउंडर को हटा दिया और बस ट्रांसफॉर्म सेट किया। Xaml में निश्चित रूप से मैंने अभिविन्यास को चित्र में बदल दिया।

अब, दृश्यदर्शी चित्र दिखाता है और पृष्ठ चित्र भी है।लेकिन छवि को कैमरा रोल में थंबनेल के रूप में सहेजा गया है, इसलिए मैं सीधे डिवाइस पर देख सकता हूं कि कैप्चर की गई छवि अभी भी परिदृश्य अभिविन्यास है।

, बढ़िया नहीं होगा अगर किसी को सत्यापित कर सकता है कि यह एक बीटा बग है, या अगर हम बस यहाँ कुछ बेवकूफ कोड किया है;)

धन्यवाद।

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