Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
WPF

Как переопределить стиль компонентов из подключенных библиотек?

02.03.2026, 10:50. Показов 707. Ответов 16

Студворк — интернет-сервис помощи студентам
Коллеги, вопрос по применению стилей. Допустим, у меня есть две библиотеки LibControls и LibForms, а также приложение MyApp. LibControls содержит компоненты и базовые стили для них. LibForms и MyApp используют компоненты из LibControls.

Если для MyApp понадобится кастомный дизайн кнопки, мне достаточно описать новый стиль и подключить его к нужным кнопкам (Style={RelativeSource buttonStyleFromMyApp}). Однако кнопки, которые используются на формах подключенной к приложению библиотеки LibForms, останутся с прежним дизайном, ведь там жестко прописан Style={RelativeSource buttonStyleFromLibControls}.

Но можно использовать не именованные стили (без x:Key). Такие стили будут применяться ко всем компонентам, которые метчатся на TargetType. Это позволит перекрыть базовый стиль кнопок, который определен в LibControls. Обратной стороной будет необходимость создавать кастомные компоненты на каждый тип кнопок. Например, если дизайн кнопки "Ок" должен отличаться от дизайна кнопки "Отмена", потребуется определить 2 наследника класса Button: CancelButton и OkButton. Так у Button могут получиться десятки наследников.

Вопрос: это единственный способ добиться возможности переопределять стили подключенных UI-библиотек из приложения?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2026, 10:50
Ответы с готовыми решениями:

Переопределить стиль
Имеется ComboBox. Не могу изменить белый цвет, то-есть, когда нажимаю на текст, и в этом нажатом...

Как динамически присвоить стиль кнопке, если стиль описан в файле xaml?
Здравствуйте, столкнулся с проблемой: нужно в коде присвоить стиль кнопке. Этот стиль находится в...

Меняем стиль элементов управления на свой стиль
Меняем стиль элементов управления на свой стиль. Может кому пригодится. watch?v=0EI9_KhHeN0&

16
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
02.03.2026, 12:29
romaro,
наследование стилей BasedOn?
XML
1
<Style x:Key="имя__стиля" BasedOn="{StaticResource имя_стиля_родителя}">
0
9 / 7 / 2
Регистрация: 26.08.2025
Сообщений: 17
02.03.2026, 14:27
Цитата Сообщение от romaro Посмотреть сообщение
там жестко прописан Style
Стили задаются в словарях .xaml
Таким образом все зависит от организации словарей.
Не важно как он определен, TargetType или x:Key - главное чтоб он был подключен к корню в App.xaml
Его можно динамически менять через удаление и подстановку в MergedDictionaries.
Общего случая здесь нет - надо конкретно смотреть разделена ли компоновка и свойства стиля.
Если все в одной куче, тогда надо все переделать, а если разделены, то словари со свойствами можно подменить на свои.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
02.03.2026, 19:37
Цитата Сообщение от generis Посмотреть сообщение
Стили задаются в словарях .xaml
Не всегда.
Есть гораздо более хитрые способы.

Цитата Сообщение от romaro Посмотреть сообщение
Допустим, у меня есть две библиотеки LibControls и LibForms
Ваши личные или внешние пакеты в которые вы не можете вносить изменения?

Цитата Сообщение от romaro Посмотреть сообщение
Обратной стороной будет необходимость создавать кастомные компоненты на каждый тип кнопок.
Нет. Варианты:
1) Если в стиле кнопок не используете Content, то можно в него записывать какие-то значения, от которых будет зависеть стиль кнопоки.
2) Можно создать AP-свойство для кастомизации стиля. В простейшем случае, достаточно string типа и статического класса со стринг константами.

Но в большинстве случаев хватает простейшего DynamicResource иногда в тандеме с ComponentResourceKey.

Цитата Сообщение от romaro Посмотреть сообщение
Но можно использовать не именованные стили (без x:Key). Такие стили будут применяться ко всем компонентам, которые метчатся на TargetType.
Здесь не так просто.
Например, как одним базовым стилем поменять визуал не только дефолтных кнопок, но и кастомизированных?
К сожалению "волшебной палочки", для создания решения на все случаи жизни, нет.
Надо сначала определить с тем, что хочется получить в результате.
Если очень продвинуто делать, то нужно внедрять управление темами.
0
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
02.03.2026, 21:06  [ТС]
Рад, что вы не забросили форум

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ваши личные или внешние пакеты в которые вы не можете вносить изменения?
Личные, т.е. могу вносить изменения.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если очень продвинуто делать, то нужно внедрять управление темами.
Я как раз хочу заложить для этого фундамент. В простейшем виде там ведь достаточно вынести определения кистей и цветов на отдельный словарь, который как раз и будет темой (LightThemeColors.xaml например). Затем создается LightTheme.xaml, в который подключается словарь цветов и словари стилей конкретных элементов (например, MyCustomButton.xaml). В общем, я пересказываю эту статью.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Например, как одним базовым стилем поменять визуал не только дефолтных кнопок, но и кастомизированных?
Определить стиль дефолтной кнопки, а все стили кастомных кнопок сделать наследуемыми через BasedOn?

Мне не до конца понятно, как лучше работать со стилями в wpf-библиотеке, которая не содержит App.xaml (т.е. является подключаемой). Если использовать только Button и прописывать для него style, то придется подключать словарь с дефолтными стилями в каждый xaml, где используется условная кнопка. И, если не ошибаюсь, у такого подключенного стиля будет приоритет над стилями из App.xaml. В итоге библиотечные компоненты не получат стиль приложения.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Надо сначала определить с тем, что хочется получить в результате.
В конечном счете я бы хотел получить две возможности:
1. Примененять темы ко всем компонентам приложения, в том числе из подключенных библиотек
2. Переопределять стиль отдельных элементов из приложения

Добавлено через 28 минут
Цитата Сообщение от romaro Посмотреть сообщение
Определить стиль дефолтной кнопки, а все стили кастомных кнопок сделать наследуемыми через BasedOn?
Не увидел сразу в чем проблема. Без именованных стилей BasedOn как раз не получится использовать
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
02.03.2026, 21:18
Цитата Сообщение от romaro Посмотреть сообщение
Без именованных стилей BasedOn как раз не получится использовать
А как вы хотели использовать различные стили без их именования?
На стилях, которые только таргетированы под конкретные контролы - далеко не уедешь..

Цитата Сообщение от romaro Посмотреть сообщение
1. Применять темы ко всем компонентам приложения, в том числе из подключенных библиотек
Нужно четко понимать, на каком уровне должно быть взаимодействие стилей (библиотек). Например, библиотека стилей для кнопок может прямо иметь ссылку на библиотеку цветов. Таким образом, можно создать определенные стили прямо в библиотеке кнопок. А можно совмещать их на более высоком уровне, напр. в App.xaml. И в разметке окон указывать переопределения стилей где требуется.

Вы по существу вопроса вроде много написали, однако конкретики никакой практически.. Что в итоге нужно не ясно.
0
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
02.03.2026, 21:26  [ТС]
Если все-таки работать с именованными стилями и обходиться минимумом кастомных компонентов (либо вообще без них), то вопрос сводится к тому, как добавить словарь темы в глобальную область видимости, а не подключать к ресурсу каждого Window/UserControl (у меня без этого не получается ссылаться на конкретный стиль в свойстве Style).

Пока нагуглил два варианта:
1. Использовать Themes/Generic
2. В подключаемых библиотеках использовать StyledUserControl и StyledWindow и уже как-то забирать стиль из приложения ( что создаст неявную зависимость):
C#
1
2
3
4
5
6
7
8
9
public class StyledUserControl : UserControl
{
    public StyledUserControl()
    {
        var uri = new Uri("/AssemblyName;component/Styles/MainStyles.xaml", UriKind.Relative);
        var resourceDictionary = Application.LoadComponent(uri) as ResourceDictionary;
        this.Resources.MergedDictionaries.Add(resourceDictionary);
    }
}
Может есть другие пути?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
02.03.2026, 21:31
Цитата Сообщение от romaro Посмотреть сообщение
Может есть другие пути?
Конечно. Подключить стили в App.xaml.
Например, если стили в этом же проекте:
XML
1
2
3
4
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Style/Colors.xaml"/>
    <ResourceDictionary Source="/Style/ButtonStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
Можно подключить вообще из других сборок (проектов)..
0
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
02.03.2026, 22:25  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Конечно. Подключить стили в App.xaml.
А если у меня LibForms, которая подключается к MyApp содержит явные указания стилей. Например для Button:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<UserControl ...>
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/LibControls;component/Styles/Button.xaml" />
            </ResourceDictionary.MergedDictionaries>
 
        </ResourceDictionary>
    </UserControl.Resources>
...
<Button ... Style="{DynamicResource myButtonStyle}">
...
</UserControl>
Разве подключение к App.xaml словаря Button.xaml с другим определением для myButtonStyle переопределит кнопку, которая вынесена на форму подключенной библиотеки? Я думал, что стили, явно подключенные к ресурсу компонента (в данном случае UserControl) будут иметь приоритет.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
02.03.2026, 22:48
Причем здесь UserControl?
Конечный стиль элемента определяется разметкой. Таргетированные стили работают по принципу "пузырька", т.е. все что не переопределено - наследуется из базового (родительского) стиля, т.е. как бы "всплывает" наверх.

Цитата Сообщение от romaro Посмотреть сообщение
Разве подключение к App.xaml словаря Button.xaml с другим определением ...
Я вот что не пойму: вы хотите менять стили контролов только на основании их типа (TargetType)? Неименованные стили?
По мне, так это какая-то утопия.. Или вы чего-то не понимаете фундаментального..

Добавлено через 6 минут
Цитата Сообщение от wizard41 Посмотреть сообщение
Или вы чего-то не понимаете фундаментального..
Или я чего не понял из ваших мыслей...

Я вообще делал так: в отдельной библиотеке находятся все цветовые гаммы вместе со стилями конкретных контролов. В другой библиотеке, которая имеет прямую ссылку на первую - созданы Темы. В каждой Теме описана конфигурация цветов и контролов из первой библиотеки.
В проект подключается библиотека "Темы". Как итог, приложение имеет в своем распоряжении несколько Тем. Путем изменения Тем - элементы окон тут же изменяются на описанные в этой библиотеке..
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
02.03.2026, 23:10
Цитата Сообщение от romaro Посмотреть сообщение
Мне не до конца понятно, как лучше работать со стилями в wpf-библиотеке, которая не содержит App.xaml (т.е. является подключаемой).
Задача: в библиотеке контролов используются дефолтные стили, которые должны быть на уровне App. И надо чтобы в режиме разработки их тоже было видно. Проблема подключения в XAML самих контролов, в том что они ближе к контролу и перебить их приоритет словарём на более высоком уровне (App) не получится.
Два варианта:
1) Который я сам использовал: создаёте проект типа "Приложение WPF", но компилите его в DLL сборку. Можно и в exe - это тоже мешать не будет. В режиме разработки будут использовать стили из App библы. В режиме рантайм из App приложения. Так как библа всё равно будет использоваться только в WPF приложениях, то лишних зависимостей такой способ тоже не создаст.
2) Подключаете нужные ресурсные словари в XAML контролов. Так как словари известны, то в конструкторе Code Behind удаляете их. Инициализация словарей происходит в методе InitializeComponent(). Поэтому удаление должно быть после его вызова. Для DynamicResource это сработает прекрасно. Но если есть StaticResource, то начнутся "танцы с бубном".
1
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
02.03.2026, 23:48  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
2) Подключаете нужные ресурсные словари в XAML контролов. Так как словари известны, то в конструкторе Code Behind удаляете их. Инициализация словарей происходит в методе InitializeComponent(). Поэтому удаление должно быть после его вызова. Для DynamicResource это сработает прекрасно. Но если есть StaticResource, то начнутся "танцы с бубном".
То есть это как раз вариант, при котором в подключаемых либах должны использоваться наследники от UserControl и Window? Удаляя предустановленный словарь, открываем компонент для словарей из глобавльной видимости. А почему не стали использовать этот вариант? Из-за проблем со статическими ресурсами?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
03.03.2026, 00:40
Цитата Сообщение от romaro Посмотреть сообщение
А почему не стали использовать этот вариант? Из-за проблем со статическими ресурсами?
Наличие Code Behind. Статические ресурсы - их не всегда можно заменить на динамические.
Да и более прозрачно и предсказуемо мне показалось сделать с App.

Добавлено через 1 минуту
Цитата Сообщение от romaro Посмотреть сообщение
при котором в подключаемых либах должны использоваться наследники от UserControl и Window?
Ну, так кастомные UserControl и Window (те в которых есть XAML) - это всегда наследники.
0
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
03.03.2026, 01:18  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Да и более прозрачно и предсказуемо мне показалось сделать с App.
Вот я сейчас попробовал сделать тестовый проект, у меня не подключился стиль.

1)
Создал приложение как подключаемую библиотеку и добавил к ней словарь со стилем кнопки:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Application x:Class="WpfDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfDemo"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/LibControls;component/Styles/LightTheme/LightTheme.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
2)
Точно такой же словарь с таким же стиле для кнопки добавил в само приложение (разница только в цвете кнопки):
XML
1
2
3
4
5
6
7
8
9
10
11
<Application x:Class="MyApp.Wpf.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/MyApp.Wpf;component/Styles/LightTheme/LightTheme.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
Проверил, что стиль из локального словаря доступен (вручную подключил его к другой кнопке).

Но после запуска приложения кнопка не использует ни стиль из WpfDemo, ни из MyApp.

Добавлено через 4 минуты
При этом, что интересно, в дизайнере MyApp кнопка из подключенного компонента получает стиль, подключенный к приложению. Т.е. работает как надо.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
03.03.2026, 11:28
Цитата Сообщение от romaro Посмотреть сообщение
Точно такой же словарь с таким же стиле для кнопки добавил в само приложение (разница только в цвете кнопки):
Когда словарь в другой сборке, то нужен правильный полный URI.
Скорее всего это будет:
XML
7
<ResourceDictionary Source="pack://application:,,,/LibControls;component/Styles/LightTheme/LightTheme.xaml"/>
Добавлено через 7 минут
Если не получится самому разобраться, то скиньте Решение целиком.
Я посмотрю вечером.
1
3 / 3 / 0
Регистрация: 12.09.2016
Сообщений: 116
04.03.2026, 02:22  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если не получится самому разобраться, то скиньте Решение целиком.
Вроде как получилось разобраться. Там была проблема в том, что у меня точка запуска по определенной причине вынесена в Program.cs. Соответственно, я не смог добиться, чтобы стиль, подключаемый в App.xaml применялся в подключенной библиотеке (хотя на уровне дизайнера работает). Это как-то связано с тем, что главное окно должно быть зарегистрировано в приложении только после словаря стилей. Получается примерно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    internal class Program
    {
        [STAThread]
        public static void Main()
        {
 
            var app = new Application();
 
            var rd = new ResourceDictionary
            {
                Source = new Uri("pack://application:,,,/Styles/LightTheme/LightTheme.xaml")
            };
 
            app.Resources.MergedDictionaries.Add(rd);
            var mainWindow = new MainWindow();
 
            app.Run(mainWindow);
        }
    }
Еще у меня вопрос, как правильно компилировать UI-библиотеку (изначально созданную как приложение) собственно в либу. Сейчас я прописываю <OutputType>Library</OutputType> и меняю build action для App.xaml на C# compilier. Оно работает, но пропадает подсказка при добавлении стилей. Может быть можно как-то настроить, чтобы App.xaml в дизайнере был точкой входа и соответственно шарил подключенные стили, а при компиляции уже не учитывался бы.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
04.03.2026, 21:09
Цитата Сообщение от romaro Посмотреть сообщение
Там была проблема в том, что у меня точка запуска по определенной причине вынесена в Program.cs.
Я делал под другому.
Запуск MainWindow прописывал в App WPF приложения.
А в Program.Main только запускал экземпляр App.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
в код Program записываем инициализацию Модели, экземпляра App с передачей ему Модели и запуск на выполнение этого экземпляра.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using StudentDormitories;
using System;
using System.CodeDom.Compiler;
using System.Diagnostics;
 
namespace SQLiteModel
{
    class Program
    {
        /// <summary>
        /// Application Entry Point.
        /// </summary>
        [STAThread()]
        [DebuggerNonUserCode()]
        [GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
        static void Main(string[] args)
        {
 
            ModelSQLite model = new ModelSQLite("DefaultConnection");
 
            App app = new App(model);
 
            app.InitializeComponent();
            app.Run();
        }
    }
}
Приложение можно запускать - оно работает.
На этом фиксирую изменения на GitHub.
Цитата Сообщение от romaro Посмотреть сообщение
Может быть можно как-то настроить, чтобы App.xaml в дизайнере был точкой входа и соответственно шарил подключенные стили, а при компиляции уже не учитывался бы.
Не понял.
Ну, есть он и есть, а чему он мешает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2026, 21:09
Помогаю со студенческими работами здесь

Свой стиль CheckBox для listbox и стиль кнопок
Здравствуйте. Несколько вопросов. 1 Как создать стиль своего CheckBox для listbox точнее нужно...

Как переопределить стили границы для ячеек в DataGrid Avalonia
Я не особо понимаю как нужно переопределять свойства у следующих стилей &lt;ControlTheme...

Как переопределить стандартный контрол ComboBox?
Всем привет! Мне нужно переопределить стандартный контрол ComboBox но я не могу найти именно...

Как переопределить ControlTemplate в коде c#
&lt;Thumb&gt; &lt;Thumb.Template&gt; &lt;ControlTemplate&gt; ...

Как переопределить текст ошибки, либо сделать, чтобы ошибки не возникало?
У меня есть свойства в модели типа decimal. И если в textbox у меня пустая строка, то появляется...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru