Я разрабатываю игру для довольно важного проекта, и мне нужны некоторые кнопки в моей форме. Эти кнопки, кстати, должны быть круглыми. Я имею в виду:Delphi rounded-border button
Изображение показать то, что я ищу. Я нашел в Интернете эту процедуру и люди говорили, что она работает очень хорошо:
procedure DrawRounded(Control: TWinControl) ;
var
R: TRect;
Rgn: HRGN;
begin
with Control do
begin
R := ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
Perform(EM_GETRECT, 0, lParam(@r)) ;
InflateRect(r, - 4, - 4) ;
Perform(EM_SETRECTNP, 0, lParam(@r)) ;
SetWindowRgn(Handle, rgn, True) ;
Invalidate;
end;
end;
Так что я написал этот код:
procedure TForm1.FormCreate(Sender: TObject);
begin
//code for other stuff
DrawRounded(Button1);
end;
Я использую Lazarus 1.2.4 на данный момент. Кстати, когда я собираюсь скомпилировать, у меня есть ошибка, которая говорит Identifier not found "HRGN"
.
Я думал, что должен был включить библиотеку в uses
, но я ничего не нашел. Любая помощь?
Он определен в ['lcltype.pp'] (http://lazarus-ccr.sourceforge.net/docs/lcl/lcltype/hrgn.html). – TLama
почему downvotes? По крайней мере, комментарий, а не downvoting, похоже, слишком часто случается в наши дни. Мы не все так же одарены, как и большинство из нас, поэтому независимо от того, насколько основной или тривиальный вопрос, а не просто давать отрицательные вниз, по крайней мере, объясните, что не так. Я не вижу проблемы с этим вопросом, но потом я думаю, что это может объяснить, почему я также получаю множество downvotes ... –