AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BitBtn ohne transparenz nutzen

Offene Frage von "himitsu"
Ein Thema von Nixsager · begonnen am 8. Mai 2021 · letzter Beitrag vom 8. Mai 2021
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.346 Beiträge
 
Delphi 12 Athens
 
#1

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:15
Ach du meinst die Transparenz des Images im Button
und nicht eine Transparenz des Buttons selber?

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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mai 2021 um 12:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.346 Beiträge
 
Delphi 12 Athens
 
#2

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:18
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)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mai 2021 um 12:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:22
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?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:38
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?
Alpha-Kanal in einem 24-Bit Bitmap?

Diese antiken Delphis können nur mit Zusatzkomponenten mit PNG oder 32-Bit BMPs umgehen.
In neueren Delphis gibt einige dieser Probleme nicht (mehr), da man hier flexibler durch die Erweiterungen der letzten 20 Jahre zu seinem Ziel kommt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Nixsager

Registriert seit: 15. Aug 2012
13 Beiträge
 
Delphi 7 Personal
 
#5

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:30
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.
GPL = Greatest Pest License !!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.346 Beiträge
 
Delphi 12 Athens
 
#6

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 12:40
Jupp, @KodeZwerg,

die Transparenz kommt hier eben nicht aus dem Bild, sondern von Delphi-Referenz durchsuchenTButtonGlyph, welches dieses eine Pixel verwendet und alle anderen gleichfarbigen Pixel transparent darstellt.

In neueren Delphis wurden viele Standard-Kommponenten aufgemotzt überarbeitet und können nun oft auch direkt JPG oder PNG (nicht nur BMP und manchmal ICO) und eben auch die Transparenzen und Alphakanäle der Bilder richtig darstellen.

TImagleList in den alten Delphis nimmt beim Einfügen eines Bildes die Transparenzfarbe, welche sich vor dem Speichern noch ändern lässt, und generiert daraus eine Maske (zusätzliches SW-Bitmap mit den transparenten Pixeln).
Diese Maske kann auch leer sein und dann gibt es eben keine Transparenz.

Die neuste TImageList (FMX) kann auch z.B. PNG direkt speichern, anstatt nur BMP/ICO.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mai 2021 um 12:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 13:00
Aber Ihr habt schon bemerkt das ich auch den punkt angesprochen habe mit einem "oder" davor.

Sorry, ich wollte nur helfen, ich lasse es bleiben, okay.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.346 Beiträge
 
Delphi 12 Athens
 
#8

AW: BitBtn ohne transparenz nutzen

  Alt 8. Mai 2021, 13:19
Wie schon gesagt wurde, dieser alte BitBtn verwendet immer das Pixel links-unten.

Ja, die Farben im Bild zu ändern, bzw. die Farbe des einen Pixls, geht natürlich. (aber mindestens dieses eine Pixel bleibt immer transparent)
Oder man nimmt eben einen anderen Button, welcher auch andere Zeichenmethoden kennt, bzw. man ändert was am BitBtn, damit der anders malt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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:43 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