2013-09-16 4 views
8

У меня есть окно без границ. Я искал сеть для закругленных углов, но все с границами. Как я могу сделать закругленные углы формы (not with borders)? Есть ли способ сделать это?Округлые углы в окнах форм C#

Я новичок в C#, поэтому, пожалуйста, объясните ...

Благодаря

ответ

24

попробовать это:

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] 
     private static extern IntPtr CreateRoundRectRgn 
     (
      int nLeftRect,  // x-coordinate of upper-left corner 
      int nTopRect,  // y-coordinate of upper-left corner 
      int nRightRect, // x-coordinate of lower-right corner 
      int nBottomRect, // y-coordinate of lower-right corner 
      int nWidthEllipse, // height of ellipse 
      int nHeightEllipse // width of ellipse 
     ); 

     public Form1() 
     { 
      InitializeComponent(); 
      this.FormBorderStyle = FormBorderStyle.None; 
      Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 20, 20)); 
     } 
    } 
} 

здесь: Form with Rounded Borders in C#?

+0

Обратите внимание, что ширина и высота - это ссылки на это. Ширина и это. Высота. –

+1

Пробовал использовать это на панели. Он только округляет один из краев (вверху слева)! –

+1

@ElMac: Я не пытаюсь повторить это, и это работает для меня отлично. не могли бы вы подтвердить, что вы скопируете код вставить правильно? – AsfK

1

Регион Собственость просто срезает углы. Чтобы иметь нужный округлый угол, вам придется рисовать округленные прямоугольники.

Drawing rounded rectangles

Это может быть проще нарисовать изображение формы вы хотите, и положить, что на прозрачной форме. Легче рисовать, но не может быть изменено.

Также проверьте этот Another One

+0

«Регион Собственость [SIC] просто срезает углы.» Это правда, он зажимает рендеринг формы, делая углы формы округлыми прозрачными углами. Чтобы * нарисовать * закругленные углы, скажем, с 3D-скосом, требуется дополнительная работа по рисованию. Значит, ты не ошибаешься, но я думал, что твоя фраза просто немного запутанна. –

0

Я нашел этот код

придумать с закругленными углами текстовое поле, я начал пробовать для работы с событием переопределения краски, но, к сожалению, без какого-либо результата, что связано с тем, что (я полагаю), что te xtbox получен из Windows. Поэтому я попытался перекрывая WM_PAINT API вместо, который имел желаемые результаты

http://www.codeproject.com/Articles/17453/Textbox-with-rounded-corners

Благодарности

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