С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/47: Рейтинг темы: голосов - 47, средняя оценка - 4.98
2 / 2 / 0
Регистрация: 01.04.2018
Сообщений: 11
1
WPF

Программно добавить круглый Border и Image в нем, с условием, что изображение не будет вылазить за Border

05.01.2019, 11:22. Показов 8659. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте всем!
Перерыл весь интернет, но нигде не нашел подходящей инфы. (Может искал не там)

Как уже и описано в заголовке, мне нужно скруглять изображение Border'ом, при помощи разметки я это смогу сделать, а вот программное добавление не получается. Получается, что изображение получается квадратным на круглом бордере.)))

При помощи XAML я делаю это так:
XML
1
2
3
4
5
6
7
8
9
10
                        <Border Cursor="Hand" HorizontalAlignment="Right" Width="90" Height="90" Margin="0,0,50,0">
                            <Border.OpacityMask>
                                <VisualBrush>
                                    <VisualBrush.Visual>
                                        <Border CornerRadius="1" Width="1" Height="1" Background="White"/>
                                    </VisualBrush.Visual>
                                </VisualBrush>
                            </Border.OpacityMask>
                            <Image Stretch="Fill" Source="Resources\logo_night.png" Cursor="Hand"/>
                        </Border>
Мне нужно точно также сделать только программно. Методом тыка не получилось, не нашел как настраивать OpasityMask, Visual Brash, и т.д.
Буду оченнь благодарен за помощь!☺
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2019, 11:22
Ответы с готовыми решениями:

Некорректная работа свойств border и border-radius на мобильных устройствах
Доброго времени суток, произошла интересная вещь: использовала border-radius:50% и border:6px...

CSS border-right как убрать крайний правый border
делаю сайт http://medi-clinic.ru и столкнулся с такой проблемой, в меню пункты разделены рамкой,...

Border-top и border-bottom сделать шарами
здравствуйте, не могу сделать границы рамки шарами, т.е. border-bottom: 15px dotted black; - будут...

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

10
Модератор
Эксперт .NET
15854 / 11000 / 2854
Регистрация: 21.04.2018
Сообщений: 32,311
Записей в блоге: 2
05.01.2019, 13:19 2
Цитата Сообщение от White_Tomato Посмотреть сообщение
Мне нужно точно также сделать только программно.
А Вы уверены, что пошли правильным путём?
По концепции WPF, задачи программного (из кода C# в CB окна) изменения WPF элементов, вообще, не должно возникать.
Вероятно, Вы неверно реализовываете поставленную задачу.
0
2 / 2 / 0
Регистрация: 01.04.2018
Сообщений: 11
16.01.2019, 11:20  [ТС] 3
Я думаю, что да. Мне нужно добавлять программно изображения, но чтоб они были круглыми. Ну, обычный Image с ссылкой на озображением. И чтоб изображение было круглое. Как например аватарки в контакте, в диалогах и прочее.
0
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,433
16.01.2019, 11:29 4
Цитата Сообщение от White_Tomato Посмотреть сообщение
Мне нужно добавлять программно изображения, но чтоб они были круглыми
XML
1
2
3
4
5
<Image Name="st" Source="E://1.jpg">
            <Image.Clip>
                <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100" />
            </Image.Clip>
        </Image>
1
2 / 2 / 0
Регистрация: 01.04.2018
Сообщений: 11
16.01.2019, 12:24  [ТС] 5
Рядовой, спасибо, помог очень! Это то, что мне нужно!

Программно добавил так.
C#
1
2
3
4
Image img = new Image() {Cursor = Cursors.Hand, Stretch = Stretch.Fill, Width = 100, Height = 100};
                img.Source = new BitmapImage(new Uri(@"D:\New_rules\Resourses\Images\1.png", UriKind.RelativeOrAbsolute));
                img.Clip = new EllipseGeometry() {RadiusX = 50, RadiusY = 50, Center = new Point(50,50)};
                stp.Children.Add(img);
0
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,433
16.01.2019, 12:37 6
White_Tomato,
XML
1
2
3
4
5
<Image Name="st" Source="E://1.jpg">
            <Image.Clip>
                <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100" />
            </Image.Clip>
        </Image>
этот код оставьте в xaml, просто меняйте источник изображения
C#
1
st.Source = new BitmapImage(new Uri(@"D:\New_rules\Resourses\Images\1.png", UriKind.RelativeOrAbsolute));
1
Модератор
Эксперт .NET
15854 / 11000 / 2854
Регистрация: 21.04.2018
Сообщений: 32,311
Записей в блоге: 2
16.01.2019, 12:51 7
White_Tomato, прислушайтесь к совету
Цитата Сообщение от Рядовой Посмотреть сообщение
этот код оставьте в xaml, просто меняйте источник изображения
и даже больше. Сделайте свойство в VM для привязки Source и меняйте это свойство, а не свойство элемента.
Хотите научиться создавать нормальные WPF приложения - забудьте об использовании имён элементов!
Не тяните эти приёмы из WinForms в WPF!
1
2 / 2 / 0
Регистрация: 01.04.2018
Сообщений: 11
17.01.2019, 12:44  [ТС] 8
Я слишком глуп, чтоб уметь использовать WMMW. Нет, рил не хватает мозгов! Может инфы не нашел стоящей... Но я даже понять не могу WMMW.
0
Модератор
Эксперт .NET
15854 / 11000 / 2854
Регистрация: 21.04.2018
Сообщений: 32,311
Записей в блоге: 2
17.01.2019, 12:52 9
Цитата Сообщение от White_Tomato Посмотреть сообщение
Я слишком глуп, чтоб уметь использовать WMMW. Нет, рил не хватает мозгов! Может инфы не нашел стоящей... Но я даже понять не могу WMMW.
Ну, для начала не MVVM, а не WMMW.
Прочитайте из топика раздела Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]

Добавлено через 1 минуту
Что за задача у Вас в общем? Будет возможность - помогу.
1
2 / 2 / 0
Регистрация: 01.04.2018
Сообщений: 11
21.01.2019, 07:31  [ТС] 10
Пишу простенький мессенджер. Есть уже 2 версии, которые работают. Но я еще решил сделать аватарки. И мне нужно было их скруглить, при выводе списка диалогов. Вот и с именами отправителя, с последними сообщениями пытался добавить еще и круглые авы. И раз не могу понять как правильно работать с MVVM, использую многопоточность.
0
Модератор
Эксперт .NET
15854 / 11000 / 2854
Регистрация: 21.04.2018
Сообщений: 32,311
Записей в блоге: 2
21.01.2019, 10:17 11
Цитата Сообщение от White_Tomato Посмотреть сообщение
И раз не могу понять как правильно работать с MVVM, использую многопоточность.
Это параллельные темы. MVVM - определяет в целом принцип разделения приложения на три части:
  • Модель (Model) - обработка данных
  • Представление (View) - отображение данных
  • Модель представления (ViewModel) - согласование между представлением и моделью
Каждая из них, конечно, в зависимости от реализации может состоять из множества других частей (или подчастей?).

Многопоточность же, в основном, относится к способам получения, обработки данных. И, соответственно, чаще всего используется в Модели.

В Вашем случае Вам для начала надо явно выделить данные и их обработку в отдельный проект - Модель.
А как отображать их: WinForms, WPF или на Консоли - это уже относится к View и не должно влиять на Модель.
1
21.01.2019, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2019, 10:17
Помогаю со студенческими работами здесь

Border-image
Добрый день. Подскажите пожалуйста, как избавиться от еле видных полосок, появившихся вследствие...

Border-image
Здравствуйте! Очень нужна ваша помощь! Уже перечитал много тем, но так и не смог использовать...

Border и Image
пожалуйста скажите как добавить border к image-у,,,,я пишу Boreder border = new Border;...

Border-image
Доброго времени суток всем. Создал треугольник из бордера. А сделать его в картинке не получается....

Border-image не работает
Подскажите почему может не работать на сайте border-image .dividerHeading h4 span{ ...

Как поставить иконку кругом в центре border-bottom без фона border-bottom внутри круга?
Как поставить иконку кругом в центре border-bottom без фона border-bottom внутри круга?Чет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru