【发布时间】:2019-02-05 19:58:51
【问题描述】:
我是一名前 IT 专业人士,使用各种软件进行了大量数据库编程,使用各种编程语言,从 PL/1 和 Pascal 到最新的 Python。我正在尝试在 UWP 环境中学习 c#,以期可能编写一些混合现实应用程序。是的,我知道我有野心......因为现在它根本不起作用!哈哈!
我给自己做了一个“简单”的小项目,开始摆弄课程和学习软件。这是一个使用 .Net 框架的 c# 简单幻灯片软件,因为我希望能够在混合现实和 2D 应用程序中使用它。我已经在 Python 中对此进行了编程,因此我正在尝试将其移植到 c#(我知道它不是直接端口……天哪……)。天哪,在我完成的大量谷歌搜索中,我找不到任何像样的教程或代码。很多在没有 .Net 的 c# 中,很多在其他语言中,但不是在我尝试使用的环境中。
所以!我已经在 Visual Studio 2017 中使用空白 UWP 应用程序创建了我的应用程序。我正在使用工具箱中的“图像”并将其放在我的屏幕上,创建了一个 AppBarButton 来放置我的控件。我创建了(使用其他示例)一个选择器,该选择器返回一个存储文件以选择一个 jpg 文件,并且能够将名称放在我在同一屏幕上创建的文本框中。
但是!!!
经过几个小时的摆弄,我找不到如何在我用 XAML 创建的这个“图像”中加载图像。此外,我还想对这张图片进行操作、缩放、旋转,但我不知道该往哪里看。最后,如果有人能指点我如何从目录中读取整个文件列表以及如何使用 Zip 文件,我们将不胜感激。
如果你有代码,我会通读它,或者如果你有我应该做的教程,请提出!但是,作为一名经验丰富的 IT 人员,我正在寻找中肯的说明。我曾尝试查看 Microsoft C# 教程,但对俗气的笑话和缓慢的节奏失去了耐心......而且我是一个非常有耐心的人......
作为参考,我在这里包含了我现在所在位置的 XAML 和 C# 代码。经过这么多年的编程,感觉就像一个孩子学会说话,真是令人沮丧!哈哈!
XAML 部分:
<Page.BottomAppBar>
<CommandBar>
<CommandBar.Content>
<Grid/>
</CommandBar.Content>
<AppBarButton Icon="OpenFile" Label="AppBarButton" Tapped="Loadmedia"/>
<AppBarButton Icon="Next" Label="AppBarButton"/>
</CommandBar>
</Page.BottomAppBar>
<Grid>
<TextBox x:Name="outtext" HorizontalAlignment="Left" VerticalAlignment="Bottom" Height="73" Width="1343" Margin="315,0,0,10"/>
<Image x:Name="mypic" HorizontalAlignment="Left" Height="765" Margin="48,45,0,0" VerticalAlignment="Top" Width="1783" FocusVisualPrimaryBrush="Black"/>
</Grid>
</Page>
这是 C# 代码:
public MainPage()
{
this.InitializeComponent();
}
private async void Loadmedia(object sender, TappedRoutedEventArgs e)
{
var picker = new FileOpenPicker();
Image img = sender as Image;
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
StorageFile file = await picker.PickSingleFileAsync();
outtext.Text = file.Path;
mypic.UriSource = new BitmapImage(new Uri(file.Path));
}
}
【问题讨论】:
-
尝试使用 mypic.Source 而不是 mypic.UriSource
-
谢谢奥尔曼,我也试过了。到目前为止,我发现您无法从计算机加载任何图片,它必须是应用程序资源的一部分。我成功加载了作为资源一部分的图片......我可能需要另一个对象而不是 Image...... Canvas?我不知道……。