Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ecken abrunden? (https://www.delphipraxis.net/82059-ecken-abrunden.html)

ColdFire 7. Dez 2006 13:48


Ecken abrunden?
 
Hy Leute...

Wo bzw unter welchem stichwort kann ich nachschaun um meine mainform zu ändern (ecken abrunden etc) ?
Vill hat ja jemand ein beispiel für mich währe supi

Danke CF

SirThornberry 7. Dez 2006 13:56

Re: Ecken abrunden?
 
Unter "Create*Rgn" kannst du schaun

ColdFire 7. Dez 2006 14:04

Re: Ecken abrunden?
 
Naja rund is mir klar aber wie runde ich die ecken ab ?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  R: HRgn;
  a: integer;
begin
  a     := -25;
  Height := 500;
  Width := 550;
  R     := CreateEllipticRgn(-a, - a, Width - 45, Height - 45);
  SetWindowRgn(Handle, R, True);
end;

SirThornberry 7. Dez 2006 14:08

Re: Ecken abrunden?
 
Wenn du CreateElippticRgn verwendest ist klar das eine Elypse draus wird. Konkret wäre eventuell CreateRoundRectRgn für dich das Richtige.

Sunlight7 7. Dez 2006 14:09

Re: Ecken abrunden?
 
Mal beim Nachbarn vorbeischauen: MSDN-Library durchsuchenCreateRoundRectRgn :wink:

Balu der Bär 7. Dez 2006 14:11

Re: Ecken abrunden?
 
Beispiel:

Delphi-Quellcode:
procedure MakeRounded(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, - 5, - 5);
    Perform(EM_SETRECTNP, 0, lParam(@r));
    SetWindowRgn(Handle, rgn, True);
    Invalidate;
  end;
end;

SirThornberry 7. Dez 2006 14:13

Re: Ecken abrunden?
 
@Balu + Threadstarter: Das erzeugte HRGN sollte nach dem Anwenden wieder gelöscht werden.
[Edit]ist vermutlich unsinn was ich geschrieben habe[/Edit]

ColdFire 7. Dez 2006 14:24

Re: Ecken abrunden?
 
Schon erledigt DANKE !

Delphi-Quellcode:
  procedure TForm1.FormCreate(Sender: TObject);
    var
      rgn: HRGN;
    begin
      rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
        0,           // y-coordinate of the region's upper-left corner
        ClientWidth, // x-coordinate of the region's lower-right corner
        ClientHeight, // y-coordinate of the region's lower-right corner
        40,          // height of ellipse for rounded corners
        40);         // width of ellipse for rounded corners
      SetWindowRgn(Handle, rgn, True);
    end;

Sunlight7 7. Dez 2006 15:03

Re: Ecken abrunden?
 
Zitat:

Zitat von SirThornberry
@Balu + Threadstarter: Das erzeugte HRGN sollte nach dem Anwenden wieder gelöscht werden.
[Edit]ist vermutlich unsinn was ich geschrieben habe[/Edit]

Stimmt :mrgreen:
Zitat:

Zitat von SetWindowRgn
you should not make any further function calls with this region handle. In particular, do not close this region handle.



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz