2010-08-26 4 views
1

Многие современные применения имеют формы неправильной формы. Каков наилучший способ сделать это в Delphi? Можно ли это сделать без использования каких-либо сторонних VCL?Форма неправильной формы

+3

Я не верю претензии в вашем первом предложении. –

+0

Изменено «Most» to «Many» :) – rajeemcariazo

+0

Нечетная вещь, так как Windows XP представила темы, на самом деле большинство окон имеют закругленные углы (сделано с помощью SetWindowRgn bij в службе тем) –

ответ

9

yes возможно, вы должны использовать функцию SetWindowRgn, чтобы установить новую область окна для рисования.

попробовать этот код

procedure TForm1.FormCreate(Sender: TObject); 
var 
    region:HRGN; 
begin 
    region := CreateRoundRectRgn(ClientRect.left, ClientRect.top, ClientRect.right, ClientRect.bottom, 15, 15); 
    SetWindowRgn(Handle, region, true); 
end; 

alt text

проверка тезисы ссылки для получения дополнительной информации

+6

SetWindowRgn() - это старинный подход к формированию окон , В Win2000 и более поздних версиях теперь предпочтительны методы UpdateLayeredWindow() и SetLayeredWindowAttributes(), которые обертываются свойствами TForm.TransparentColor ... и TForm.AlphaBlend ...). –

8

Вы можете использовать собственность TForms TransparentColorValue. В сочетании с BorderStyle = bsNone он придаст вам такую ​​форму.

+0

Работает ли это над системами стекла? –

+0

Если вы имеете в виду Aero Glass, то да. – Torbins

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