Хороший вариант рассмотреть базовый View из Android (там довольно просто и понятно)
3 Этапа Measure, Layout, Draw
Минимум классов нужно.
Rect - Тут понятно
Bitmap - Базовый класс для изображений
Canvas - Базовый класс для рисования
Paint - Базовый класс кисти для рисования
Drawable - Базовый класс графического объекта
MotionEvent - Базовый класс передачи событий для элементов ui(widget)
View- Базовый класс ui (widget)
Context - Базовый контекст
Window - Базовый класс окна с event loop
Handler - Система передачи событий в очередь обработки ui потока
MessageQueue - Event loop (по факту массив лямбд для выполнения их в ui потоке )
LayoutInflater - Класс для создания дерева виджетов из xml
Далее еще сложнее, нужно из базового View сделать разный виджеты, типа TextView, EditView, ImageView...
А так же виджеты для разметки дочерних виджетов (Linear, Absolute,Table и тд..)
Рисовать всё можно на Direct2d, лучше взять direct2d 1.0 (там очень простая инициализация), в дальнейшем можно будет уже перейти на новую версию
Желаю удачи )