![]() |
Komponentenentwicklung (runder Button)
Hallöle,
angeregt durch Hansas kürzlichen Thread bzgl. eines runden Buttons habe ich mir Gedanken gemacht, wie man so etwas möglichst einfach, aber dennoch optisch ansprechend umsetzen könnte. Hier fiel mir GDI+ ein (eine API dazu gibt es unter ![]() - beim Erzeugen der Kompo werden 2 Bitmaps angelegt (Up und Down) - wenn sich Größe oder Farben ändern, werden diese mit Hilfe von GDI+ neu gezeichnet (Farbverlauf und Antialiasing) - OnPaint des Buttons wird je nach Zustand der linken Maustaste die eine oder andere Bitmap per BitBt als Hintergrund gezeichnet - um den klickbaren Bereich einzuschränken, wird eine Region verwendet - ist der Button "gedrückt", wird die Caption leicht rechts unten versetzt gezeichnet, ansonsten zentriert Denke ich hier korrekt oder könnte man das noch optimieren? Mir ist klar, dass GDI+ auf dem Zielrechner vorhanden sein muss, aber die entsprechende DLL ist ja frei verfügbar. Ich bin mir auch nicht sicher, ob ich das jemals produktiv einsetzen werde, ich sehe das eher als Machbarkeitsstudie. Danke schon jetzt für alle Vorschläge und Anregungen. |
Re: Komponentenentwicklung (runder Button)
Du denkst also mit ? :mrgreen: Stand der Dinge ist folgender : soll der Bereich tatsächlich exakt anklickbar sein, dann kommt man um Regions kaum rum, trotz Alzaimar. :-D Zeichnet man etwas rundes, dann gibt es bei Verwendung von TImage etc. auch Ecken. Das wäre dann eben nicht 1:1. Solcherlei Effekte unsichtbar zu machen, bedeutet : selber mit RoundRect usw., alles zu zeichnen. Das widerum hat zur Folge : die Pixel-Struktur. Die schaffe ich nun aus der Welt, indem doch Grafiken verwendet werden. Die sind dann schön rund (ohne Pixel) und ich muss sie selber anfertigen. Dann noch pro Button zwei für jeweils Down oder Up. Das ist viel Arbeit für einen optischen Effekt. Ist das auch soweit fertig, dann braucht man irgendwann große Schriften und die Buttons sind schön rund, aber die Schriften sind pixelig. Und jetzt ? Ausweg wäre, Komponente zuzukaufen. Die sind aber meistens überdimensioniert, zumindest für diesen Zweck. Oft auch schlecht kommentiert. Bei 3-Zeilen Prozedur steht da beispielsweise hinter dem end; dass das zu dem begin kurz vorher gehört. 8) Von der Programm-Logik ist nicht mal was kommentiert.
|
Re: Komponentenentwicklung (runder Button)
Zitat:
Die Buttons von Hansa sehen doch ziemlich 08/15 mäßig aus. :stupid: |
Re: Komponentenentwicklung (runder Button)
Zitat:
1. Bitmap: Standard (Buttoni oben) 2. Bitmap: Gedrückt 3. Bitmap: Disabled 4. Bitmap: Maske (Schwarz = klickbar, weiss=außerhalb des Buttoni) Das ist dann eine allgemeine Button-Komponente, die man mit geeigneten Bitmaps zu einem 'runden' Buttoni umformen kann. Das kann man natürlich noch erweitern, um 'MouseOver' Bitmaps, oder Animationen beim Drücken etc. DeddyH's Ansatz, das zur Laufzeit zu rendern, ist natürlich insofern viel besser, weil man die Farben (Hinter- und Vordergrund) zur Laufzeit ändern kann. Hinsichtlich der Hintergrundfarbe ginge das natürlich mit einem Alpha-Kanal, den man als 5.Bitmap noch speichert. Etwas zur Laufzeit zu rendern ist einfach, aber so, das es richtig gut aussieht, ist imho nicht trivial. |
Re: Komponentenentwicklung (runder Button)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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