Создать кнопку с "нуля"

Я изучаю C#. Основы выучил и язык очень понравился. Теперь я хочу потренироваться и создать свою библиотеку с "нуля", которая будет выводить на экран кнопку. При этом я не хочу использовать встроенные библиотеки и классы .net (например, WPF, Rectangle, Point итп). Можете подсказать, с чего я должен начать и какие шаги предстоит предпринять? Необязательно, чтобы это была кнопка. Это может быть, допустим, простой квадрат.


Ответы (2 шт):

Автор решения: Aziz Umarov

Вам нужно почитать по User Control если вы хотите реализовать свой Custom Control. Можно почитать тут

Обновлено. Ну в силу того что условие задачи изменилось и цель всё таки продолжить изучение языка и его возможностей. Я рекомендую вам не изобретать велосипед на начальных этапах (это моё личное мнение спорить можно) - это сложно, нудно и все мы понимаем что гонки этот велосипед не выйграет, а скорее изучить то что сегодня востребовано, язык с# занимает свою нишу в программировании почитайте про это.

→ Ссылка
Автор решения: Anton

Первые шаги тут будут изучение API, используемых для вывода графики (GDI/GDI+/OpenGL/DirectX) и изучение механизмов для взаимодействия с ними в .NET. WPF, если интересно, использует Direct3D 9, но там работа с графикой вынесена в отдельный компонент на C++ из-за сложности. Более реалистичным было бы начать с GDI: docs.microsoft.com/en-us/windows/win32/gdi/windows-gdi

Если уж WPF, то надо наследоваться от класса UIElement или FrameworkElement, изучите их, найдите их исходный код, на гитхабе он есть. Создавать их аналоги на первых этапах обучения смысла практически никакого. В любом случае, если даже задумали свой рендер для контролов, то придется создавать либо их аналоги, либо от них наследоваться, иначе WPF просто не поймет, как работать с контролом. Либо да, брать DirectX API, и начинать рисовать самому (что не отменяет выше сказанного).

В любом случает желательно не изобретать велосипед на начальных этапах - это сложно, нудно и все мы понимаем что гонки этот велосипед не выйграет, а скорее изучить то что сегодня востребовано, язык с# занимает свою нишу в программировании почитайте про это.

→ Ссылка