C # - Заменить файл, который в настоящее время используется в качестве фона с одним и тем же именем файла [duplicate]

неопределенная ссылка на WinMain@16 или аналогичную «необычную» main() ссылку на точку входа (особенно для ).

Вы возможно, пропустили, чтобы выбрать правильный тип проекта с вашей реальной IDE. IDE может захотеть связать, например. Проекты приложений Windows для такой функции точки входа (как указано в недостающей ссылке выше) вместо обычной int main(int argc, char** argv);.

Если ваша среда IDE поддерживает Plain Console Projects , вы может захотеть выбрать этот тип проекта вместо проекта приложения Windows.


Здесь case1 и case2 обрабатываются более подробно из реальный мир проблема.

3
задан Dave 13 October 2013 в 15:38
поделиться

1 ответ

Проблема не в DataContext, а просто в том, как WPF загружает изображения из файлов.

Когда вы привязываете свойство Source элемента управления Image к строке, содержащей путь к файлу, WPF внутренне создает новый объект BitmapFrame из пути в основном следующим образом:

string path = ...
var bitmapImage = BitmapFrame.Create(new Uri(path));

К сожалению, это сохраняет файл изображения, открытый WPF, так что вы не можете его удалить.

Чтобы получить вокруг этого вы должны изменить тип свойства изображения на ImageSource (или производный тип) и загрузить изображение вручную, как показано ниже.

public ImageSource ImageSource { get; set; } // omitted OnPropertyChanged for brevity

private ImageSource LoadImage(string path)
{
    var bitmapImage = new BitmapImage();

    using (var stream = new FileStream(path, FileMode.Open))
    {
        bitmapImage.BeginInit();
        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.StreamSource = stream;
        bitmapImage.EndInit();
        bitmapImage.Freeze(); // optional
    }

    return bitmapImage;
}

...
ImageSource = LoadImage(@"C:\Users\Dave\Desktop\Duplicate\Swim.JPG");
4
ответ дан Clemens 26 August 2018 в 22:40
поделиться
Другие вопросы по тегам:

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