Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anzahl Glyphs eines Bitmaps rausfinden (https://www.delphipraxis.net/159855-anzahl-glyphs-eines-bitmaps-rausfinden.html)

Helmi 15. Apr 2011 14:02

Delphi-Version: 7

Anzahl Glyphs eines Bitmaps rausfinden
 
Hallo,

gibt es die Möglichkeit rauszufinden, wieviele Glyphs ein Bitmap beinhaltet?

In der Unit "Buttons" in der auch ein BitBtn vorhanden ist, hab ich folgenden Code gefunden:
Delphi-Quellcode:
procedure TButtonGlyph.SetGlyph(Value: TBitmap);
var
  Glyphs: Integer;
begin
  Invalidate;
  FOriginal.Assign(Value);
  if (Value <> nil) and (Value.Height > 0) then
  begin
    FTransparentColor := Value.TransparentColor;
    if Value.Width mod Value.Height = 0 then
    begin
      Glyphs := Value.Width div Value.Height;
      if Glyphs > 4 then Glyphs := 1;
      SetNumGlyphs(Glyphs);
    end;
  end;
end;
Dort findet man die Berechnung von Glyph:
Delphi-Quellcode:
Glyphs := Value.Width div Value.Height;
Aber das kommt mir jetzt schon etwas zu einfach vor :-)

Deep-Sea 15. Apr 2011 14:03

AW: Anzahl Glyphs eines Bitmaps rausfinden
 
Stimmt schon, sofern gilt, dass die Glyphs quadratisch sind :wink:

Bernhard Geyer 15. Apr 2011 14:05

AW: Anzahl Glyphs eines Bitmaps rausfinden
 
Zitat:

Zitat von Helmi (Beitrag 1095398)
Dort findet man die Berechnung von Glyph:
Delphi-Quellcode:
Glyphs := Value.Width div Value.Height;
Aber das kommt mir jetzt schon etwas zu einfach vor :-)

Dies ist korrekt wenn man Definiert das für ein Glyph Breite = Höhe gilt.
Ansonsten gibt es keine im Bitmap vorhanden Infos die sowas liefern würde. Borland hat damals einfach festgelegt das so zu machen um den GDI-Ressourcenverbrauch zu minimieren.

Helmi 15. Apr 2011 14:05

AW: Anzahl Glyphs eines Bitmaps rausfinden
 
Zitat:

Zitat von Deep-Sea (Beitrag 1095399)
Stimmt schon, sofern gilt, dass die Glyphs quadratisch sind :wink:

Und was mach ich jetzt wenn ich ein Bitmap habe dass die gleichen/ähnlichen Ausmaße hat, aber keine Glyph beinhaltet?

Bernhard Geyer 15. Apr 2011 14:28

AW: Anzahl Glyphs eines Bitmaps rausfinden
 
Zitat:

Zitat von Helmi (Beitrag 1095401)
Und was mach ich jetzt wenn ich ein Bitmap habe dass die gleichen/ähnlichen Ausmaße hat, aber keine Glyph beinhaltet?

Ähnlich ist egal (Value.Width mod Value.Height = 0) und bei gleich einfach wieder das Property Glyphs wieder zurücksetzen.

Helmi 15. Apr 2011 14:31

AW: Anzahl Glyphs eines Bitmaps rausfinden
 
Ich hab das Ganze jetzt mal in eine Function gepackt:
Delphi-Quellcode:
  function Count_Glyphs(Bitmap: TBitmap): Integer;
    begin
      //Result definieren
      Result := 1;

      //prüfen ob das Verhältnis zwischen Breite und Höhe stimmt
      If Bitmap.Width mod Bitmap.Height = 0 then
        begin
          //Anzahl Glyphs errechnen
          Result := Bitmap.Width div Bitmap.Height;

          //prüfen ob es mehr als 4 Glyphs gibt
          If Result > 4 then
            Result := 1;
        end;
    end;
Was aber dem Code aus der Unit Buttons entspricht.
Hab beim ersten Mal das "mod" übersehen. Das hilft natürlich weiter...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 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