![]() |
TForm im aussehn ändern?
Ich eine "Tochter" von TForm erstellen welches in form z.b. eines Herzes ist ?? Also eine TForm in herzform ??
MfG Clane |
Re: TForm im aussehn ändern?
Ja. Indem du eine Form mit Tranzparenz erstellst und dann ein Hintergrundbild mit tranzparenten Randteilen verwendest.
|
Re: TForm im aussehn ändern?
wie gehts das genau ?? kleines tut oder sowas wäre hilfreicht hab mich noch nie sooo tief in die TFormen gewagt
|
Re: TForm im aussehn ändern?
|
Re: TForm im aussehn ändern?
ja nur mit poligonen kann ich schlecht n herz machen .... kann ich als rgn auch eine alphamap nehmen ?
|
Re: TForm im aussehn ändern?
|
Re: TForm im aussehn ändern?
Zitat:
@Clane Der richtige Weg um dem Formular eine Form zu geben sind Regionen. Da wird das Formular zugeschnitten. Hier ein Beispiel das das Prinzip anzeigt. Die betreffende Funktion zu Berechnung der Region ist langsam. Der Code stammt aus meinem Beispiele Ordner wo es eher um das Prinzip als um Effizienz geht. Wenn man das mit einer vernünftigen Geschwindigkeit machen will, dann sollte man es mit ScanLine machen. Hier im Beispiel habe ich es mit Pixels gemacht, da mir die Geschwindigkeit nicht wichtig war sondern das Verständnis. Wenn du keine Erfahrung mit ScanLine hast, dann sag bescheid und ich erstelle dir eine bessere Funktion. Im Beispiel wird eine Beispiel-Bitmap aus Text erstellt und alles drumherum wird weggeschnitten.
Delphi-Quellcode:
var
RGN: THandle; function CreateRGN(Bmp: TBitmap; TransparentColor: TColor): THandle; var X, Y: Integer; PixRGN: THandle; begin Result := CreateRectRGN(0, 0, Bmp.Width, Bmp.Height); for Y := 0 to Bmp.Height - 1 do for X := 0 to Bmp.Width - 1 do if Bmp.Canvas.Pixels[X, Y] = TransparentColor then begin PixRGN := CreateRectRGN(X, Y, X + 1, Y + 1); try CombineRGN(Result, Result, PixRGN, RGN_DIFF); finally DeleteObject(PixRGN); end; end; end; //Erstellt nur eine Beispiel-Bitmap mit einem Text (Font: Arial, Fett, 72) procedure BeispielBitmapErstellen(Bmp: TBitmap); var MyText: String; begin MyText := 'Delphi Regio'; //Bitmap Teil (eine Beispiel-Bitmap mit einem Text wird erstellt) Bmp.Canvas.Font.Name := 'Arial'; Bmp.Canvas.Font.Size := 72; Bmp.Canvas.Font.Style := Bmp.Canvas.Font.Style + [fsBold]; Bmp.Height := Bmp.Canvas.TextHeight(MyText); Bmp.Width := Bmp.Canvas.TextWidth(MyText); Bmp.Canvas.TextOut(0, 0, MyText); end; procedure TForm1.FormDestroy(Sender: TObject); begin //Wieder freigeben DeleteObject(RGN); end; procedure TForm1.Button1Click(Sender: TObject); var Bmp: TBitmap; begin Button1.Enabled := False; Color := clRed; Bmp := TBitmap.Create; try //Bitmap erstellen BeispielBitmapErstellen(Bmp); //Größe des Formulars an Bitmap anpassen ClientHeight := Bmp.Height; ClientWidth := Bmp.Width; //Region erstellen RGN := CreateRGN(Bmp, Bmp.Canvas.Pixels[0, 0]); //Zeichenbereich eines Fensters setzen SetWindowRGN(Handle, RGN, True); finally Bmp.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Close end; |
Re: TForm im aussehn ändern?
das ist doch mal ne richtig gute hilfe allerdings versteh ich net wie ich da jezt da herz mache ??
|
Re: TForm im aussehn ändern?
Na als das Bitmap.
|
Re: TForm im aussehn ändern?
als ganz normales bitmap in der var da ?? richtig oda ??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 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