Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi BitBtn ohne transparenz nutzen (https://www.delphipraxis.net/207839-bitbtn-ohne-transparenz-nutzen.html)

Nixsager 8. Mai 2021 11:03

BitBtn ohne transparenz nutzen
 
Hi

Ist es möglich, BitBtn ohne transparenz zu nutzen?

Gruß vom Nixsager

himitsu 8. Mai 2021 11:43

AW: BitBtn ohne transparenz nutzen
 
Panel ohne Rahmen drumrum/dahinter?

Oder was Anderes benutzen, wie z.B. TSpeedButton?

Nixsager 8. Mai 2021 11:53

AW: BitBtn ohne transparenz nutzen
 
Also geht das leider nicht.

himitsu 8. Mai 2021 11:56

AW: BitBtn ohne transparenz nutzen
 
Geht bestimmt.

Du mußt dich vermutlich bloß in die Paint-Routine reinhängen und zu Beginn den Hintergrund übermalen. :angle2:



[edit]
TBitBtn ist ein normales TButtonControl/TWinControl.
Dachte er ist sowas "selbstgemachtes" wie TLabel, TShape oder TImage, welche sich nicht selbst malen (keine "echten" Windows-Controls sind), sondern die sich auf den Canvas des Parents malen.

Was meinst'e denn mit Transparenz genau?

Oder war das in D7 noch anders, mit der Vererbung?
Was sind denn bei dir die Vorfahren des TBitBtn? (irgendwo ein TGraphicControl dabei?)

Nixsager 8. Mai 2021 12:06

AW: BitBtn ohne transparenz nutzen
 
Na ja, ich habe es jetzt so gemacht, das ich den linken-unteren Bildpunkt mit einer anderen Farbe bemale, aber erstens, habe ich an der Stelle eine Einkerbung, und zweitens, wenn das Bild diese Farbe nutzt, sieht es auch nicht toll aus.

Und das mit sich 'in die Paint-Routine reinhängen' ist mir zu hoch.

Andere native Delphi-Objekte bringen mir nichts, das sie wiederum auch eingeschränkt sind, und für so eine kleinigkeit will ich keine Fremdkomponenten nutzen.

Nachtrag:
Die Transparenz wird ja automatisch auf das ganze Bitmap dur die Farbe des linken-unteren Bildpunktes gesetzt.
Bei dem Image-Objekt kann man das abstellen, aber bei BitBtn halt nicht.

Meinst du, das Canvas des BitBtn zu bemalen, und nicht das Bitmap selber?

Was wie vererbt wird kann ich dir nicht sagen, denn von dem was ich mache, habe ich keinen Dunst.

Bernhard Geyer 8. Mai 2021 12:12

AW: BitBtn ohne transparenz nutzen
 
Wie wäre es mit einem Update auf aktuelle Delphi-Versionen?
U.u. könnte sich diese Einschränkung mit einer aktuellen 10.4 erledigt haben.
Da liegen doch Welten dazwischen.

himitsu 8. Mai 2021 12:15

AW: BitBtn ohne transparenz nutzen
 
Ach du meinst die Transparenz des Images im Button
und nicht eine Transparenz des Buttons selber? :stupid:

Ja, das mit dem Pixel und der Transparenzfarbe, dass ist halt so.
Steht sogar in der Doku, dass dieses Pixel genommen wird, für die TransparenzFarbe. (ein Color-Property wäre natürlich schöner)


GIF, PNG oder "BITMAP mit AlphaKanal" wird dein altes Delphi dort nicht verwenden können, wo die Transparenz im Bild gespeichert ist und von da verwendet wird.


Man kann natürlich ins Paint des Buttons eingreifen (quasi ein CustomDraw verwenden), den Button selber zeichnen und dort das Image malen, wie man will.

himitsu 8. Mai 2021 12:18

AW: BitBtn ohne transparenz nutzen
 
Ein TButton mit einer TImageList verwendet die Transparenz, wie in der ImageList definiert, während das Bild dort eingefügt wurde.
Da kann man dann eine andere Farbe wählen, damit die Transparenz weg ist. (ja, per Default wird dort bei Bitmaps auch dieses Pixel genommen, um die Vorauswahl der Transparenzfarbe zu bestimmen)

KodeZwerg 8. Mai 2021 12:22

AW: BitBtn ohne transparenz nutzen
 
Wäre es nicht viel einfacher das Bild in einem Bild-Editor zu öffnen, Alpha-Kanal löschen oder eben den punkt in der Ecke, Bild speichern, Fertig?

Nixsager 8. Mai 2021 12:30

AW: BitBtn ohne transparenz nutzen
 
Muss ich mal ausbrobieren.

Daran habe ich nicht gedacht, da ich ja nur das Bild von dem BitBtn ändern will.

Aber ist das für das was ich haben will nicht eigendlich überladen?

Danke für die Idee.

Im moment hat der Bildpunkt für die Transparenz die Farbe aus clBtnFace bekommen, damit ist man was das sichbare betrifft wohl auf der sicheren Seite, da diese Farbe ja eh schon der Hintergund ist,

@KodeZwerg
Das Bild ja ja keinen Alphakanal.
Ich bearbeite es direkt, und die Transparenz wird ja durch den genannte Bildpunkt bestimmt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Seite 1 von 2  1 2   

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