2010-11-02 5 views
2

Я хотел бы просто нарисовать строку (если возможно, в определенном шрифте и размере) на экране (в определенном месте). Я вхожу в приложение форм Windows C#. К сожалению, я не мог найти никакого намека на то, как это сделать в Интернете.рисование строки на экране C#

Пожалуйста, помогите!

Christian

+0

Вы хотите нарисовать или отобразить текст? – anishMarokey

+0

Хотите ли вы рисовать в любом месте экрана или где-нибудь в вашей форме? –

+0

@ Ханс - я думаю, что он не мог ** найти, как это сделать ** в Интернете (т. Е. Googling не помог ..). Но я согласен, что слово «ничья» неоднозначно. –

ответ

3

Чтобы нарисовать строку за пределами вашего окна, вы должны создать новое окно, установить его маску в какой-то цвет (скажем, пурпурного), а затем нарисовать текст на него - вы можете использовать простую этикетку Вот.

Установите для вашего стиля рамки окна значение «Нет», и там вы идете.

Другими словами, нет способа отображения «свободного текста» без прикрепленного окна.

Для маскировки цвета, используйте «цвет прозрачности» или аналогичное свойство (я буду смотреть на него позже - нет VS под рукой)

+0

Я вижу. Ну, это звучит как обходной путь, но этого будет достаточно. Большое спасибо! – Christian

+0

Итак, я рекомендую этот ответ. Я подал еще один ниже, но, как я отметил в этом, я не думаю, что люди должны выходить за пределы своих собственных приложений. – Mikael

0

Проверить this вне.

Или может быть, вы ищете DrawString метод

Надежда это поможет

+0

Спасибо, может быть, стоит так сделать. Спасибо! – Christian

2

делать то, что вы просите не очень рекомендуется, смотри, например, http://blogs.msdn.com/b/greg_schechter/archive/2006/05/02/588934.aspx

Если вы действительно хотите сделать что-то подобное; здесь жуткий способ сделать это:

[DllImport("User32.dll")] 
    public static extern IntPtr GetDC(IntPtr hwnd); 

    [DllImport("User32.dll")] 
    public static extern void ReleaseDC(IntPtr dc); 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     IntPtr desktopDC = GetDC(IntPtr.Zero); 

     Graphics g = Graphics.FromHdc(desktopDC); 

     g.DrawString("Test", new Font(FontFamily.GenericSerif, 12), Brushes.Blue, 300, 300); 
     g.Dispose(); 

     ReleaseDC(desktopDC); 
    } 

Пожалуйста, обратите внимание, что я не рекомендую никому делать это, поскольку я не думаю, что приложения должны делать вещи, как это. Если вы хотите нарисовать что-то, вы должны сделать это на своей собственной форме/контроле.

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