Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG Datei für "Überschrift" vergrößern (https://www.delphipraxis.net/200101-png-datei-fuer-ueberschrift-vergroessern.html)

duff 20. Mär 2019 10:45

PNG Datei für "Überschrift" vergrößern
 
Hallo Zusammen,

ich würde gerne einer kleinen .png (32x37) Datei einen Text hinzufügen. Sozusagen als überschrift.

Leider schaffe ich es bisher nur auf dem eigentlichen Bild einen Text zu schreiben.

Jetzt würde ich gerne die Datei in der Höhe um die Höhe des Textes vergrößern. Weiß aber nicht wirklich wie ich das anpacken soll, damit es ordentlich aussieht. Muss ich auf die Transparents achten? Wenn ja wie? Wenn es ggf. einfacher ist, kann ich mir auch vorstellen, die "Überschrift" in einem extra "kasten" mit schwarzer Umrandung über dem eigentlichen Bild darzustellen.

Wäre super, wenn mir da jemand helfen könnte.

Viele Grüße

Medium 20. Mär 2019 11:09

AW: PNG Datei für "Überschrift" vergrößern
 
Spricht etwas dagegen, einfach ein Label neben die Grafik zu packen?

duff 20. Mär 2019 11:18

AW: PNG Datei für "Überschrift" vergrößern
 
Hallo und danke für deine Antwort. Ja, das ganze muss in die PNG geschrieben werden und dann abgespeichert werden. Diese wird dann außerhalb der Software verwendet.

Redeemer 20. Mär 2019 15:13

AW: PNG Datei für "Überschrift" vergrößern
 
Du kannst das TPNGImage vergrößern (SetSize oder so) und dann daneben einen Text einfügen, ggf. die neue Fläche in der gewünschten Farbe färben. Das ist kein Problem, es sei denn, die Datei hat einen Alphakanal, da der Alphakanal nicht durchs Zeichnen auf der PNG geändert wird, sprich durchsichtig bleibt.

Sherlock 20. Mär 2019 15:24

AW: PNG Datei für "Überschrift" vergrößern
 
Vorsicht, wenn man das Image vergrößert, dann wird der Inhalt gestreckt, wenn ich mich nicht irre. Stattdessen muß man die enthaltene Bitmap nehmen, vergrößern und in ein entsprechend vergrößertes Image (kann dann wohl auch das gleiche sein) reinpacken.

Sherlock

Redeemer 20. Mär 2019 18:04

AW: PNG Datei für "Überschrift" vergrößern
 
Nö, SetSize bei TPNGImage vergrößert die Zeichenfläche nach links und unten, ohne zu strecken.

Sherlock 21. Mär 2019 09:27

AW: PNG Datei für "Überschrift" vergrößern
 
Sehr gut. Ich hatte bisher nur FMX.TImage verwendet, das da wohl anders arbeitet.

Sherlock

Rollo62 22. Mär 2019 06:35

AW: PNG Datei für "Überschrift" vergrößern
 
Ich würde nichts in 32x37 Bitmap reinschreiben, immer in entsprechend sinnvoll größeres Bitmap, und dann runterskalieren damit es noch lesbar bleibt und nicht extrem pixelig.
Also ein größeres temporäres Bitmap, schreiben, dann auf 32x37 mit Filter skalieren, und dem Orginalbitmap mit Transparenz überlagern.

Das 32x37 PNG vorher zu vergrößern würde ich nicht machen, das geht sicher in die Hose.

duff 22. Mär 2019 07:35

AW: PNG Datei für "Überschrift" vergrößern
 
Danke für die Antworten. Dann gucke ich mal ob ich klar komme. Gibt es hier ggf. passende Beispiele?

Harry Stahl 22. Mär 2019 08:02

AW: PNG Datei für "Überschrift" vergrößern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Stimmt die Angabe der benutzten IDE (Delphi 2007) noch?

Mit einer neueren Delphi-Version (z.B. die kostenlose Rio-Community-edition) könntest Du auch FMX nutzen, da ist das mit wenigen Zeilen machbar, z.B. so:

Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
var
  bOld,bNew: TBitmap; AddHeight: Integer;
begin
  AddHeight := 10;
  bOld := TBitmap.CreateFromFile('D:\crossblue.png');

  // New Bitmap ; Addheight = additional height for text
  bNew := TBitmap.Create (bOld.Width, bOld.Height + AddHeight);

  bNew.Canvas.BeginScene();
  // Copy old Bitmap to new
  bNew.Canvas.DrawBitmap(bold, bOld.BoundsF, RectF (0, AddHeight, bNew.Width, bNew.Height), 1, true);

  // Add Text
  bNew.canvas.ClearRect(RectF (0,0, bNew.Width, AddHeight), TAlphaColorRec.black);
  bNew.Canvas.Fill.Color := TAlphaColorRec.white;
  bNew.Canvas.Font.Size := 8;
  bNew.Canvas.FillText(RectF (0,0, bNew.Width, AddHeight), 'Test', false, 1, [], TTextAlign.Center, TTextAlign.center);
  bNew.Canvas.EndScene();

  bNew.SaveToFile('D:\crossblue2.png');
  bOld.Free;
  bNew.Free;
end;
Wobei sich die Frage stellt, ob hier tatsächlich nur 5 Pixel als zusätzliche Höhe für den Text zur Verfügung stehen sollen? Das wird man kaum lesen können, in der Anlage mal ein Beispiel mit den 5 Pixeln (dann das Original) und 10 Pixeln zusätzlicher Höhe (auch vergrößert dargestellt).


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