Как вставить картинку в wpf c
Перейти к содержимому

Как вставить картинку в wpf c

  • автор:

Как вставить картинку?

Как мне в c# коде передать другую картинку? И как я знаю можно чтоб сам xaml обращался к коду где и брал изображение, можете подсказать как?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как вставить в сетку картинку?
Пишу змейку.Есть Grid с columns i rows.Надо вставить в клетку картинку. Картинка типа так.

Как вставить картинку в tabItem компонента TabControl(C#)
Всем привет! вопрос в следующем. Можно ли и если можно то как вставить картинку в один или.

Как в DataGrid в колонке DataGridCheckBoxColumn рядом с птичкой вставить картинку из ресурсов?
Как в DataGrid в колонке DataGridCheckBoxColumn в XAML рядом с птичкой вставить картинку из.

Wpf RichTextBox. Как вставить картинку так, чтобы потом можно было найти source
т.е. имеется RichTextBox, и имеется файл с картинкой. когда я вставляю картинку через clipboard.

Эксперт .NET

15225 / 10343 / 2721
Регистрация: 21.04.2018
Сообщений: 30,655
Записей в блоге: 2

ЦитатаСообщение от NnineBfive Посмотреть сообщение

Как мне в c# коде передать другую картинку? И как я знаю можно чтоб сам xaml обращался к коду где и брал изображение, можете подсказать как?

Подсказать можно.
Но нужно чуть больше конкретики.

Как у Вас код стыкуется с XAML?
Очень похоже на то, что Вы в коде напрямую обращаетесь к UI элементам по именам.
Это подход очень трудно состыковать с «чтоб сам xaml обращался к коду».

XAML обращается к данным через привязки. А установка значения свойств напрямую из кода разрушает привязки.

Поэтому, Вам надо сначала определиться как Вы будете делать свою реализацию.

Если подобно WInForms (то есть обращаясь из кода к именам UI элементов), то это путь с кажущейся простотой. На самом деле так никто с WPF не работает и у Вас будут возникать проблемы на каждом шагу и с их решением далеко не всегда кто-то сможет Вам помочь.

Если использовать привязки, то Вам придётся, по видимому, переделать всё приложение. Так как WPF приложение надо начинать с создания Модели для данных (ведь привязки надо делать к данным). А у Вас Модели, насколько понял, вообще нет.

Добавлено через 2 минуты
NnineBfive, насколько смог упростил пример для понимания.
В качестве источника данных использовал ToggleButton

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
> >  Source="Resources/Красный крестик.png" x:Key="Image.RedCross"/>  Source="Resources/Плюс.png" x:Key="Image.BluePlus"/> >  x:Name="toggleButton" Width="50" Height="50" Margin="10"> >  TargetType="ToggleButton">  Property="Content" Value=">"/> >  Property="IsChecked" Value="True">  Property="Content" Value=">"/> > > > > >  Width="200" Height="200" DataContext=""> >  ImageSource=""/> > > >

Добавлено через 2 минуты
Нажимая на ToggleButton будет меняться картинка на нём.
А так как его Content — источник данных для Ellipse (указано в DataContext), то будет меняться и связанная с ним картинка в Ellipse «/>

Добавлено через 1 минуту
Для изменения картинки из данных по привязке, надо создать в коде C# такой же источник для привязки.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вставить картинку в виде иконки в ComboBox
Назрел такой вопрос. возможно ли в ComboBox вставить картинку в виде иконки. если да то как.

Как вставить картинку в приложение из файла
Вот что я пробовал: В тулбоксе нет PictureBox, поэтому. Добавил объект Image и пытался.

Как вставить картинку в местоположение курсора?
Добрый день. Сидел писал прогу и возникла проблемка. Когда ставлю на picturbox точку то она.

Как вставить картинку из ASP в EXCEL ?
Проблема Делаю выборку из базы MSSQL. в одном из полей находится фото. Фото вывожу файлом.

Как вставить анимированную картинку с движением по форме
Как вставить Анимированную картинку + чтоб она передвигалась! пробовал получается ерунда. как нужно.

Как вставить картинку в wpf c

Элемент Image предназначен для работы с изображениями. Свойство Source позволяет задать путь к изображению, например:

WPF поддерживает различны форматы изображений: .bmp, .png, .gif, .jpg и т.д.

Также элемент позволяет проводить некоторые простейшие транформации с изображениями. Например, с помощью объекта FormatConvertedBitmap и его свойства DestinationFormat можно получить новое изображение:

Элемент Image в WPF

InkCanvas

InkCanvas представляет собой полотно, на котором можно рисовать. Первоначально оно предназначалось для стилуса, но в WPF есть поддержка также и для мыши для обычных ПК. Его очень просто использовать:

Либо мы можем вложить в InkCanvas какое-нибудь изображение и на нем уже рисовать:

Элемент InkCanvas в WPF

Все рисование в итоге представляется в виде штрихов — элементов класса System.Windows.Ink.Stroke и хранится в коллекции Strokes, определенной в классе InkCanvas.

Режим рисования

InkCanvas имеет несколько режимов, они задаются с помощью свойства EditingMode , значения для которого берутся из перечисления InkCanvasEditingMode. . Эти значения бывают следующими:

  • Ink : используется по умолчанию и предполагает рисование стилусом или мышью
  • InkAndGesture : рисование с помощью мыши/стилуса, а также с помощью жестов (Up, Down, Tap и др.)
  • GestureOnly : рисование только с помощью жестов пользователя
  • EraseByStroke : стирание всего штриха стилусом
  • EraseByPoint : стирание только части штриха, к которой прикоснулся стилус
  • Select : выделение всех штрихов при касании
  • None : отсутствие какого-либо действия

Используя эти значения и обрабатывая события InkCanvas, такие как StrokeCollected (штрих нарисован), StrokeErased (штрих стерли) и др., можно управлять набором штрихов и создавать более функциональные приложения на основе InkCanvas.

ImageBrush

Кисть ImageBrush позволяет заполнить область растровым изображением. Возможна работа с наиболее распространенными типами файлов, включая BMP, PNG, GIF и JPEG. Используемое изображение идентифицируется свойством ImageSource. Например, ниже показана кисть, которая рисует фон для Grid с применением изображения по имени logo.png, включенного в сборку в виде ресурса:

Кисть изображения

Свойство ImageSource работает таким же образом, как свойство Source элемента Image, а это означает, что его можно также устанавливать с помощью URI, указывающего на ресурс, внешний файл или местоположение в Интернете. Кроме того, можно создать кисть ImageBrush, использующую определенное в XAML-разметке векторное содержимое, за счет указания объекта DrawingImage в свойстве ImageSource.

Этот подход позволяет сократить накладные расходы (избегая наиболее дорогостоящих классов-наследников Shape) и он также применяется, когда с помощью векторного изображения создается повторяющийся шаблон.

Среда WPF учитывает любую информацию о прозрачности, которую находит в графическом изображении. Например, WPF поддерживает прозрачные области в файле GIF, а также прозрачные и полупрозрачные области в файле PNG.

В этом примере кисть ImageBrush применяется для рисования фона ячейки. В результате изображение растягивается для того, чтобы заполнить область. Если размеры Grid больше размеров исходного изображения, в нем могут появиться артефакты измененного размера (вроде общей размытости). Если форма Grid не соответствует пропорциям изображения, последнее будет деформировано, чтобы заполнить отведенную область.

Данным поведением можно управлять с помощью свойства ImageBrush.Stretch, присваивая ему одно из значений, перечисленных здесь. Например, значение Uniform позволяет масштабировать графическое изображение для заполнения контейнера с сохранением его пропорций, a None — рисовать изображение с натуральным размером (в этом случае часть изображения может быть усечена).

Если изображение меньше заполняемой области, то оно выравнивается согласно значениям свойств AlignmentX и AlignmentY. Незаполненная область остается прозрачной. Это происходит в случае применения масштабирования Uniform к заполняемой области, которая имеет другую форму (в этом случае будут получены белые полосы сверху, снизу и по сторонам). Это также имеет место, когда используется None, а область заполнения больше изображения.

С помощью свойства Viewbox можно вырезать небольшую часть изображения, которая интересует. Для этого понадобится указать четыре числа, описывающие прямоугольник, который нужно вырезать из исходного изображения. Первые два идентифицируют верхний левый угол вырезаемого прямоугольника, а оставшиеся два — его высоту и ширину. Единственная ловушка заключается в том, что Viewbox использует относительную координатную систему — подобно градиентным кистям. Эта система назначает левому верхнему углу изображения координаты (0,0), а нижнему правому — (1.1).

Чтобы понять, как работает Viewbox, взгляните на следующую разметку:

Здесь Viewbox начинается в точке (0.4, 0.5), которая находится почти в середине изображения. (Формально координата X равна произведению 0.4 на ширину, a Y — произведению 0.5 на высоту.) Затем прямоугольник простирается в ширину на 20% оставшейся ширины и высоты изображения (прямоугольник имеет размеры 0.2, умноженное на ширину, и 0.2, умноженное на высоту изображения). Вырезанная часть затем растягивается или центрируется, в зависимости от свойств Stretch, AlignmentX и AlignmentY.

Свойство Viewbox иногда полезно при повторном использовании частей одного и того же изображения для создания некоторых эффектов. Однако если заранее известно, что понадобится только часть изображения, очевидно, имеет смысл вырезать его в каком-нибудь графическом редакторе.

WPF вставка изображения из файла ресурсов

В конструкторе показывает картинку, но при запуске приложения она не отображается. Что я делаю не так ? Заранее спасибо за ответ.

Отслеживать
206k 28 28 золотых знаков 291 291 серебряный знак 526 526 бронзовых знаков
задан 26 окт 2016 в 15:49
Андрей Бордюков Андрей Бордюков
159 1 1 золотой знак 1 1 серебряный знак 10 10 бронзовых знаков
А как именно вы объявили картинку? Как Resource или Embedded Resource? Это важно.
26 окт 2016 в 16:02
Загрузил в ресурсы, и в свойствах указал внедрение в .resx
26 окт 2016 в 16:05
Не, вы делаете что-то не то. Просто положить картинку в проект, в папку Resources.
26 окт 2016 в 16:06
просто перенёс картинку в папу Resources, ничего не изменилось,всё также
26 окт 2016 в 16:11

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вы не должны использовать ресурсы из свойств проекта, это даст вам лишь нативные ресурсы, которые подходят для WinForms, но не WPF.

Делайте вот как:

Ресурсы! Мы хотим ресурсы!

  1. Создайте каталог Resources в проекте, и добавьте туда файл через Add → Existing Item.
  2. Убедитесь, что тип файла выбран как Resource (а не Embedded Resource)
  3. Укажите в XAML путь:

PROFIT!

  • Результат:
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *