AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Position von text im Label bestimmen(Auf dem Bildschirm).
Thema durchsuchen
Ansicht
Themen-Optionen

Position von text im Label bestimmen(Auf dem Bildschirm).

Ein Thema von stiftII · begonnen am 14. Okt 2009 · letzter Beitrag vom 14. Okt 2009
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Re: Position von text im Label bestimmen(Auf dem Bildschirm)

  Alt 14. Okt 2009, 18:14
Zitat von stiftII:
Ich habe einen Text, dieser beinhaltet Smilies.
Diese möchte ich im Text umwandeln(in Grafiken).
Somit muss ich erkennen an welcher Stelle die Smilies im Text sind und wo sie auf dem Bildschirm sind, um sie beim onpaint meiner hauptform über den text zeichnen zu können.
Ahh - jetzt gibt das mehr Sinn.

Input ist eine StringListe mit ein oder mehr Zeilen.
In den Zeilen sind bestimmte Smilie in Textdarstellung.
Output ist ein Canvas.
Zusätzlich braucht man noch eine Imagelist für die Smilies.

Dann wäre die Vorgehensweise so:
Es gibt einen Startpunkt im Canvas, der mit der Text mitgeführt wird.
Das ist der "Cursor".
Zuerst die aktuelle Zeile (in Stringliste) untersuchen und den Text bis zum 1. Smilie ausschneiden.
Länge des Textes in Pixel bestimmen, z.B. so
Delphi-Quellcode:
function TrueFontWidth(fnt: TFont; const text:string): Integer;
var
   dc: hdc;
   tsize : Windows.TSize;
begin
   dc := GetDC(0);
   SelectObject(DC, fnt.Handle);
   GetTextExtentPoint32(dc, PChar(text), Length(text), tsize);
   ReleaseDC(0, DC);
   Result := tsize.cx;
end;
Die Text mit Canvas.TextRect() ausgeben.
"Cursor" entsprechend nach rechts verschieben.
Smilietext aus Zeile ausschneiden, Bitmap dazu besorgen, auf Canvas ausgeben.
"Cursor" über Breite des Bitmaps (+ etwas Zwischenraum) nach rechts schieben.
Solange wiederholen, bis ganze Zeile aufgebraucht.

Wenn es noch mehr Zeilen gibt, den "Cursor" an den linken Rand setzen und um Texthöhe nach unten
verschieben.

Ich kann mich dunkel erinnern, dass es hier in der DP einen Betrag gab, der zeigt
wie man Bitmaps in ein TRichEdit einbaut.
Es ging sogar um Smilies, aber ich finde den Beitrag nicht mehr...
Andreas
  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 16:31 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