這裏的圖片移動\調整圖像大小控制是我與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,但是我的腦袋裏沒有任何亮起的燈泡。任何建議表示讚賞。謝謝
不確定移動UI元素,但爲什麼不保持UI元素靜態並轉換圖像以達到相同的效果。因此,而不是移動UI裁剪區域,只需重新調整圖像(調整大小,移動,旋轉)。 –
謝謝你的回覆。你是對的,我的最終目標是裁剪圖像,但我需要用戶可以選擇裁剪區域。你能想到任何能幫助我的東西嗎?我需要像Paint.Net中的「選擇圖像」控件。我會澄清我的問題。再次感謝您的回覆 – freud
那麼它也是可以選擇的。當您檢測到用戶的手勢時,您可以應用重構過濾器,以便用戶修改矩形內可見的內容。 (您可以看看諾基亞Creative Studio如何操作。) –