Direct3D Image Brush [дубликат]

#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;
}
12
задан 3D-kreativ 9 August 2012 в 14:08
поделиться

2 ответа

В 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;
30
ответ дан Clemens 26 August 2018 в 20:19
поделиться

Убедитесь, что ваш 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 будет автоматически загружаться во время выполнения.

4
ответ дан Kate Gregory 26 August 2018 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: