2015-07-21 2 views
0

Я копаю в приложении WPF, написанном на C#.
Мне нужно нарисовать прямоугольник выделения, как тот, который мы используем, чтобы выбрать более одного элемента (например, файлы в папке).
У меня есть несколько объектов, которые имеют типы System.Windows.Controls.Control, System.Windows.Controls.ContentControl и System.Windows.FrameworkElement.
Я предполагаю, что мне нужно переопределить событие, например onPaint, onDraw или reDraw/rePaint.

Могу ли я использовать этот объект для рисования прямоугольника и как?Как найти чертеж на System.Windows.Controls. *?

+0

Пожалуйста, сообщите, какую информацию нужно добавить, и я сделаю это. –

+1

У вас нет приложения WinForms, у вас есть приложение WPF. Эти две вещи ** не ** одинаковы ... –

+0

OK. Сначала я узнаю, как рисовать в WPF, а потом вернулся. –

ответ

0

WPF и WinForms полностью отличаются от этого аспекта. В WinForms вы можете переопределить OnPaint, чтобы нарисовать что-либо непосредственно в контексте рисования, используя объект Graphics в обработчике событий.

В WPF есть OnRender метод, который, казалось бы, ведет себя так же, как OnPaint:

protected override void OnRender(DrawingContext dc) 
{ 
    SolidColorBrush mySolidColorBrush = new SolidColorBrush(); 
    mySolidColorBrush.Color = Colors.LimeGreen; 
    Pen myPen = new Pen(Brushes.Blue, 10); 
    Rect myRect = new Rect(0, 0, 500, 500); 
    dc.DrawRectangle(mySolidColorBrush, myPen, myRect); 
} 

Однако в WPF каждый визуальный элемент является объектом, вы не можете рисовать прямо ничего. То, что на самом деле делают методы рисования DrawingContext, просто вставляет объекты в визуальное дерево, которое будет отображаться позже вместе с другими элементами.

Использование OnRender, как правило, не самая лучшая идея, и имеет really bad performance, сравнивая быстрые операционные системы Graphics. В WPF лучше использовать пользовательские элементы управления или шаблоны.

Смежные вопросы