C# Windows phone picturebox
我正在用C#开发一个windows phone 8.1应用程序。我正在用照相机拍照。图片保存在设备上,我正试图在图片盒中显示它。 我曾在HTC手机上测试过,效果不错,但当我在诺基亚Lumia上试用时,图片永远无法加载。 有人知道如何解决这个问题吗 下面是我为拍照而唱的代码:C# Windows phone picturebox,c#,windows-phone-8,windows-phone,windows-phone-8.1,C#,Windows Phone 8,Windows Phone,Windows Phone 8.1,我正在用C#开发一个windows phone 8.1应用程序。我正在用照相机拍照。图片保存在设备上,我正试图在图片盒中显示它。 我曾在HTC手机上测试过,效果不错,但当我在诺基亚Lumia上试用时,图片永远无法加载。 有人知道如何解决这个问题吗 下面是我为拍照而唱的代码: private void snap_task_Click(object sender, EventArgs e) { cameraCaptureTask = new CameraCapture
private void snap_task_Click(object sender, EventArgs e)
{
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += cameraCaptureTask_Completed;
cameraCaptureTask.Show();
}
void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
NavigationService.Navigate(new Uri("/Slika.xaml?fotka=" + e.OriginalFileName, UriKind.Relative));
}
}
这是我尝试加载图片的代码
public Slika()
{
InitializeComponent();
string slika = string.Empty;
string slika2 = string.Empty;
this.Loaded += (s, e) =>
{
if (NavigationContext.QueryString.TryGetValue("fotka", out slika))
{
putanja = slika; /*"/Resources/" + slika + ".png";/**/
int x = putanja.Length;
if (x == 1)
{
putanja = "/Resources/" + putanja + ".png";
uriPutanja = new Uri(putanja, UriKind.Relative);
fotka = new BitmapImage(uriPutanja);
}
else
{
uriPutanja = new Uri(putanja, UriKind.Relative);
porukaTextBox.Text = putanja;
fotka = new BitmapImage(uriPutanja);
}
}
img1.Source = fotka;
};
}
PS
从本地资源加载在两部手机上都可以正常工作,这只是“如果”的“其他”部分导致诺基亚出现问题。您可以尝试将UriKind从相对更改为绝对。如果我理解了您的代码,您将获得图片的绝对路径。根据我的理解,在其他情况下,您忘记了.png。如果您正在手机的照相/摄像机滚动文件夹中保存图像,请尝试将其保存在存储卡上,然后再试一次(您只需在手机的设置中进行更改,然后说将新图片保存在SD卡上)如果可以,请尝试使用PhotoChooser任务获取图像。
public Slika()
{
InitializeComponent();
string slika = string.Empty;
string slika2 = string.Empty;
this.Loaded += (s, e) =>
{
if (NavigationContext.QueryString.TryGetValue("fotka", out slika))
{
putanja = slika; /*"/Resources/" + slika + ".png";/**/
int x = putanja.Length;
if (x == 1)
{
putanja = "/Resources/" + putanja + ".png";
uriPutanja = new Uri(putanja, UriKind.Relative);
fotka = new BitmapImage(uriPutanja);
}
else
{
uriPutanja = new Uri(putanja, UriKind.Relative);
porukaTextBox.Text = putanja;
fotka = new BitmapImage(uriPutanja);
}
}
img1.Source = fotka;
};
}
我希望以下代码将对您有所帮助:
using Microsoft.Phone.Tasks;
using System.IO;
using System.Windows.Media.Imaging;
...
PhotoChooserTask selectphoto = null;
private void button1_Click(object sender, RoutedEventArgs e)
{
selectphoto = new PhotoChooserTask();
selectphoto.Completed += new EventHandler(selectphoto_Completed);
selectphoto.Show();
}
void selectphoto_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
BinaryReader reader = new BinaryReader(e.ChosenPhoto);
image1.Source = new BitmapImage(new Uri(e.OriginalFileName));
}
}
我已经试过了,但它仍然不起作用,我也尝试过将UriKind设置为Absolute或Relative,但也没有起作用。我也检查过,但图片是.jpg的,扩展名已经写在“putanja”中了字符串,所以我肯定这不是问题所在。此外,它在一部手机上工作。如果这是真的。在第一个If情况下,你必须进行扩展,但在其他情况下,这似乎很奇怪。这是我能看到的唯一问题。在第一个If情况下,我只知道保存在本地资源中的图片的名称,这就是为什么我需要要将路径添加到它和扩展名,在其他部分中,我将整个路径和扩展名保存在“putanja”字符串中,无论如何,感谢您的帮助:)图片保存在CameraRoll foder中,您必须从那里获取它。我知道它保存在那里,字符串“putanja”包含图片的整个路径,所以它应该工作吗?如果我做错了什么,你能发布一个代码示例吗?谢谢你的帮助,当我将图片保存到SD卡时,它现在可以工作了,我现在将尝试使用你的代码来选择照片