AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TForm im aussehn ändern?

Ein Thema von Clane · begonnen am 22. Nov 2007 · letzter Beitrag vom 10. Sep 2008
Antwort Antwort
Seite 1 von 3  1 23   
Clane
(Gast)

n/a Beiträge
 
#1

TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:17
Ich eine "Tochter" von TForm erstellen welches in form z.b. eines Herzes ist ?? Also eine TForm in herzform ??

MfG Clane
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:21
Ja. Indem du eine Form mit Tranzparenz erstellst und dann ein Hintergrundbild mit tranzparenten Randteilen verwendest.
Markus Kinzler
  Mit Zitat antworten Zitat
Clane
(Gast)

n/a Beiträge
 
#3

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:34
wie gehts das genau ?? kleines tut oder sowas wäre hilfreicht hab mich noch nie sooo tief in die TFormen gewagt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:40
http://www.dsdt.info/tipps/?id=9
http://www.dsdt.info/tipps/?id=241
Markus Kinzler
  Mit Zitat antworten Zitat
Clane
(Gast)

n/a Beiträge
 
#5

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:42
ja nur mit poligonen kann ich schlecht n herz machen .... kann ich als rgn auch eine alphamap nehmen ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 20:45
http://www.torry.net/vcl/forms/nonrect/tdformshape.zip
http://www.torry.net/vcl/forms/nonrect/vwimageshape.zip
Markus Kinzler
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 21:34
Zitat von mkinzler:
Ja. Indem du eine Form mit Tranzparenz erstellst und dann ein Hintergrundbild mit tranzparenten Randteilen verwendest.
Ist nicht böse gemeint, aber das mit der Transparenz ist leider eine Unsitte und nicht die wirkliche Art wie man es machen sollte.

@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;
  Mit Zitat antworten Zitat
Clane
(Gast)

n/a Beiträge
 
#8

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 21:50
das ist doch mal ne richtig gute hilfe allerdings versteh ich net wie ich da jezt da herz mache ??
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 21:52
Na als das Bitmap.
Markus Kinzler
  Mit Zitat antworten Zitat
Clane
(Gast)

n/a Beiträge
 
#10

Re: TForm im aussehn ändern?

  Alt 22. Nov 2007, 21:55
als ganz normales bitmap in der var da ?? richtig oda ??
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz