AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Text auf eingepasstes, eingefärbtes Image, evtl. scrollbar
Thema durchsuchen
Ansicht
Themen-Optionen

Text auf eingepasstes, eingefärbtes Image, evtl. scrollbar

Ein Thema von Alien426 · begonnen am 21. Jun 2007
Antwort Antwort
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#1

Text auf eingepasstes, eingefärbtes Image, evtl. scrollbar

  Alt 21. Jun 2007, 17:27
Ich möchte folgendes machen:

In ein TImage soll ein Bild von variabler Größe gezeichnet werden.

Damit das Bild unverzerrt eingepasst wird ist folgendes gesetzt:
Delphi-Quellcode:
Proportional := True;
Stretch := True;
Auf dem Bild sollen Informationen angezeigt werden. Quasi zwei Spalten (Kategorie, Wert) mit variabler Anzahl von Zeilen.

Damit man die Schrift immer gut lesen kann soll die Farbe der Grafik angepasst werden und der Text in einer im Kontrast stehenden Farbe geschrieben werden.

Das werde ich wohl mit ScanLine machen:
Delphi-Quellcode:
    for y := 0 to bmpA.Height - 1 do
begin
  Row := bmpA.ScanLine[y];
  for x := 0 to bmpA.Width - 1 do
  begin
    Color := ColorToRGB(BackColor);
    Row[x].rgbtRed := (Row[x].rgbtRed + GetRValue(Color)) div 2;
    Row[x].rgbtGreen := (Row[x].rgbtGreen + GetGValue(Color)) div 2;
    Row[x].rgbtBlue := (Row[x].rgbtBlue + GetBValue(Color)) div 2;
  end;
end;
Alternativ eventuell AlphaBlend() oder ApplyBitmask() aus der Graphics32 Library. AlphaBlend() scheint mir etwas langsamer als ScanLine zu sein. Bei ApplyBitmask() kommen die Farben falsch raus (benutze loAND mit der Color32 der Farbe)...

Wenn ich TextOut() auf Image_Main.Picture.Bitmap.Canvas benutze wird der Text je nach Größe der Grafikdatei mit skaliert.

1. Gibt es vielleicht eine andere gute Methode zum Einfärben?
2. Wie kann ich den Text am besten ausgeben?

Wie schon geschrieben können es mehr Zeilen sein, als in die Grafik passen. Dann wäre es nett, wenn man mit dem Scrollrad der Maus durch vertikal scrollen könnte (ohne Scollbalken?). Vielleicht könnte man ja eine TScrollBox benutzen und dynamische Controls (TLabel oder TStaticText) erzeugen. Aber wie performant und speicherschonend ist das?


Ich habe ein Archiv angehängt, das ein paar Versuche aufzeigt. Einfach die Exe starten und per Rechtsklick das Kontextmenü öffnen. Source ist auch dabei.
Angehängte Dateien
Dateityp: zip infoonimage_152.zip (799,0 KB, 23x aufgerufen)
  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 05:23 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