#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
vector<string> split(const string &s, char delim) {
vector<string> elems;
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
int main() {
vector<string> x = split("thi is an sample test",' ');
unsigned int i;
for(i=0;i<x.size();i++)
cout<<i<<":"<<x[i]<<endl;
return 0;
}
В WPF изображение обычно загружается из потока Stream или Uri .
BitmapImage поддерживает как и Uri можно даже передать как аргумент конструктора:
var uri = new Uri("http://...");
var bitmap = new BitmapImage(uri);
Если файл изображения находится в локальной папке, вам придется использовать file://
Uri. Вы можете создать такой Uri из такого пути:
var path = Path.Combine(Environment.CurrentDirectory, "Bilder", "sas.png");
var uri = new Uri(path);
Если файл изображения является ресурсом в сборке, Uri должен следовать схеме Pack Uri :
var uri = new Uri("pack://application:,,,/Bilder/sas.png");
В этом случае Visual Studio Build Action для sas.png
должно быть Resource
.
Как только вы создали BitmapImage
, а также имеете Image , как в этом XAML
<Image Name="image1" />
, вы просто назначили BitmapImage свойству Source
этого элемента управления изображением:
image1.Source = bitmap;
Убедитесь, что ваш sas.png
отмечен как Build Action: Content
и Copy To Output Directory: Copy Always
в своей Visual Studio Properties
...
Я думаю, что исходный код C # будет ...
Image image = new Image();
image.Source = (new ImageSourceConverter()).ConvertFromString("pack://application:,,,/Bilder/sas.png") as ImageSource;
и XAML должны быть
<Image Height="200" HorizontalAlignment="Left" Margin="12,12,0,0"
Name="image1" Stretch="Fill" VerticalAlignment="Top"
Source="../Bilder/sas.png"
Width="350" />
EDIT
Динамически я думаю, что XAML обеспечит лучший способ загрузки изображений ...
<Image Source="{Binding Converter={StaticResource MyImageSourceConverter}}"
x:Name="MyImage"/>
, где image.DataContext
- путь string
.
MyImage.DataContext = "pack://application:,,,/Bilder/sas.png";
public class MyImageSourceConverter : IValueConverter
{
public object Convert(object value_, Type targetType_,
object parameter_, System.Globalization.CultureInfo culture_)
{
return (new ImageSourceConverter()).ConvertFromString (value.ToString());
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Теперь, когда вы устанавливаете другой контекст данных, Image
будет автоматически загружаться во время выполнения.