Нарисуйте текст на фигуре - PullRequest
0 голосов
/ 02 ноября 2011

Я хочу нарисовать строку на некоторых фигурах, следуя примерам http://msdn.microsoft.com/en-us/library/aa327572%28v=vs.71%29.aspx и http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-how-to-draw-text-on-an-image. Я использую C #, поэтому в любом случае мне нужен PaintEventArgs e. Однако, когда я вставляю его как параметр в метод, подобный DrawStringRectangleF (PaintEventArgs e), он (как и ожидалось) не распознается напрямую. Я импортирую System.Windows.Forms.PaintEventArgs и поле «Формы» все еще не распознано? Что я должен делать?

Есть ли еще какой-нибудь более простой способ назначить текст фигуре, стиль которого я могу настроить?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Поскольку вы используете WPF, просто поместите свою shape и свою TextBlock в контейнер, который позволяет элементам управления перекрываться, например Grid или Canvas.

<Grid>
    <Rectangle ... />
    <TextBlock Text="Test" 
               HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
0 голосов
/ 02 ноября 2011

Хорошо, для начала, если вы используете WinForms, вы получаете графический объект, переопределяя методы OnPaint и устанавливая стили элементов управления для ручной рисования. Вот так

... .ctor()
{
    ...
    // indicate user will paint
    SetStyle(ControlStyles.UserPaint, true);

    // rest is optional if you want/need it
    SetStyle(ControlStyles.AllPaintingInWmPaint, true);   
    SetStyle(ControlStyles.ResizeRedraw, true);
    SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
    SetStyle(ControlStyles.Opaque, true);
}

protected override void OnPaint(PaintEventArgs p)
{
    // depending on how you set the control styles, you might need
    // this to draw the background of your control wit a call to the methods base
    base.OnPaint(p);

    Graphics g = p.Graphics;
    // ... Do your painting here with g ....
}

Однако, поскольку вы также пометили это как вопрос как WPF, имейте в виду, что это не будет работать в wpf. Я не очень продвинут в этом вопросе, но я использовал переопределения метода UIElement.OnRender и добился хороших результатов. Это даст вам объект DrawingContext в отличие от объекта PaintEventArgs. Но они работают во многом таким же образом. Кроме того, вам не нужно устанавливать стили управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...