2

這裏的圖片移動\調整圖像大小控制是我與Windows 8手機應用程序如何讓用戶在Windows Phone上的8

流具有挑戰:用戶使用的是Windows 8的手機拍照。邏輯使用PhotoCamera類,它適用於我的目的。一旦數據流可用,我將數據流傳輸到結果頁面,在該頁面中從該數據流構建BitmapImage。然後,此位圖圖像將用作xaml文件中定義的Image對象的源。這個想法是將拍攝的照片顯示給用戶進行確認,並且此流程正常工作。這是結果頁面的功能。

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

     base.OnNavigatedTo(e); 
     MemoryStream stream = (MemoryStream)App.ObjectNavigationData; 
     stream.Seek(0, SeekOrigin.Begin); 
     var bitmapImage = new BitmapImage(); 
     bitmapImage.SetSource(stream); 
     imgCaptureResult.Source = bitmapImage; 
     imgCaptureResult.Visibility = System.Windows.Visibility.Visible; 
    } 

我想要做什麼是顯示一個矩形,其中用戶可以定義一個裁剪區域,我可以由圖像對象本身上定義的矩形對象(或多個線)做。只要疊加對象(裁剪區域)是靜態的,這就可以正常工作。請參閱下面的xaml。 (請注意,這裏的畫布是viewFinder(相機提要),而不是結果頁面。在結果頁面中,我將使用圖像對象而不是畫布,但這個概念很有用,我可以在另一個UI元素上疊加線條,只要線路是靜態的)

<Canvas x:Name="viewfinderCanvas" 
      Grid.Column="0" 
      Width="640" 
      Height="480" 
      HorizontalAlignment="Left" > 
     <!--Camera viewfinder --> 
     <Canvas.Background> 
      <VideoBrush x:Name="viewfinderBrush" /> 
     </Canvas.Background> 
     <Line X1="20" Y1="20" 
       X2="100" Y2="20" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="20" Y1="20" 
       X2="20" Y2="100" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="540" Y1="20" 
       X2="620" Y2="20" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="620" Y1="20" 
       X2="620" Y2="100" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="540" Y1="460" 
       X2="620" Y2="460" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="620" Y1="460" 
       X2="620" Y2="380" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="20" Y1="460" 
       X2="100" Y2="460" 
       Stroke="Red" 
       StrokeThickness="4"/> 
     <Line X1="20" Y1="460" 
       X2="20" Y2="380" 
       Stroke="Red" 
       StrokeThickness="4"/> 
    </Canvas> 

但我希望用戶能夠通過手勢來重新大小這個矩形,以便她\他能真正地自定義裁剪區域。或者將整個矩形向上/向下移動,或者將底部朝上\向下移動等。換句話說,我需要一個類似於在Paint.Net中看到的「選擇」矩形的控件,以便用戶可以選擇裁剪區域。我無法想出一個辦法來做到這一點。我查看了電話API以及諾基亞成像SDK,但是我的腦袋裏沒有任何亮起的燈泡。任何建議表示讚賞。謝謝

+1

不確定移動UI元素,但爲什麼不保持UI元素靜態並轉換圖像以達到相同的效果。因此,而不是移動UI裁剪區域,只需重新調整圖像(調整大小,移動,旋轉)。 –

+0

謝謝你的回覆。你是對的,我的最終目標是裁剪圖像,但我需要用戶可以選擇裁剪區域。你能想到任何能幫助我的東西嗎?我需要像Paint.Net中的「選擇圖像」控件。我會澄清我的問題。再次感謝您的回覆 – freud

+0

那麼它也是可以選擇的。當您檢測到用戶的手勢時,您可以應用重構過濾器,以便用戶修改矩形內可見的內容。 (您可以看看諾基亞Creative Studio如何操作。) –

回答

2

你也可以有一種方法,用戶可以單獨選擇垂直和水平邊界,而不是平移邊界(如果平移不是直截了當,沒有控制很容易)。讓用戶用一些垂直滑塊選擇垂直極限,然後以相同的方式讓他進行水平選擇。然後,您可以使用適當的顏色垂直和水平地遮蔽他選擇的區域,以顯示平移效果。 這個,只有當你沒有達到你想要的。

+0

謝謝。我同意在觸摸屏上平移不是很容易,我會嘗試用兩個邊界實現你的建議。感謝幫助 – freud