AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls BackgroundColor von eigener Klasse weitergeben (ParentColor)

BackgroundColor von eigener Klasse weitergeben (ParentColor)

Ein Thema von Waaaghboss · begonnen am 7. Sep 2015 · letzter Beitrag vom 9. Sep 2015
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#1

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 8. Sep 2015, 15:22
Und nicht vergessen, die Region nach Gebrauch mit DeleteObject wieder zu entsorgen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Waaaghboss
Waaaghboss

Registriert seit: 28. Okt 2003
Ort: Schwerin
15 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 8. Sep 2015, 16:21
Danke für die Tipps, ich habe sie umgesetzt und es sieht auc besser aus, allerdings für mich noch zu pixelig.
Ich werde wohl noch mit den Variablen rumspielen müssen.

Mein jetztiger Code:

Delphi-Quellcode:


procedure TMyPanel.SetRegion(AControl : TWinControl; X1, Y1, X2, Y2, ARadius : Integer);
var
  rgn: HRGN;
begin
  try
    rgn := CreateRoundRectRgn(X1,
                              Y1,
                              AControl.Width - X2,
                              AControl.Height - Y2,
                              ARadius,ARadius);
    SetWindowRgn(AControl.Handle, rgn, True);
  finally
     DeleteObject(rgn);
  end;
end;


procedure TMyPanel.Paint;
begin

...

  case FPanelStyle of

  ...

    psRoundRect: begin
                    Canvas.RoundRect(Canvas.Pen.Width div 2,
                                     Canvas.Pen.Width div 2,
                                     Width - Canvas.Pen.Width div 3,
                                     Height - Canvas.Pen.Width div 3,
                                     FPanelRounding, FPanelRounding);

                                     SetRegion(Self, 0, 0,
                                               -1, -1, FPanelRounding);
                  end;
...

end;
Könnte man sonst noch etwas optimieren?

Wenn ich jetzt noch Antialiasing haben möchte, muss ich doch auf Alternativen wie z.B. Grafic32 oder GDI+ umsteigen oder?
Angehängte Grafiken
Dateityp: png TMyPanel.png (11,2 KB, 20x aufgerufen)
Zu denken, was wir hätten tun können, ist eine Tätigkeit, die uns zu denken geben sollte...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#3

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 8. Sep 2015, 16:34
Wenn Du nicht umständlich selbst rechnen willst, ist das zu empfehlen. Für GDI+ gibt es aber von Mitov eine schöne Kapselung namens IGDI+.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#4

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 8. Sep 2015, 16:37
hallo,

also den Thread-Titel finde ich nun wieder etwas missverständlich
Zitat:
BackgroundColor von eigener Klasse weitergeben (ParentColor)
mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von Waaaghboss
Waaaghboss

Registriert seit: 28. Okt 2003
Ort: Schwerin
15 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 9. Sep 2015, 14:12
Danke DeddyH, ich werde es mir mal anschauen.

@frankyboy: Wie soll ich den Thread nennen?

Grüße Waaaghboss
Zu denken, was wir hätten tun können, ist eine Tätigkeit, die uns zu denken geben sollte...
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#6

AW: BackgroundColor von eigener Klasse weitergeben (ParentColor)

  Alt 9. Sep 2015, 14:22
Und nicht vergessen, die Region nach Gebrauch mit DeleteObject wieder zu entsorgen
Leider falsch!!!!!!!

https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

Zitat:
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 23:00 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