![]() |
grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Gemeinschaft,
ich würde gerne einen scrolltext ähnlich wie bei starwars anfangsschrift erstellen nur weiß ich nicht wie. was ich schaffe ist so alte scroller wie zu DOS zeiten zu basteln, wo man eigene fonts reinlädt und von rechts nach links laufen lässt. ich wollt eher auf eine normale memo-box (ö.ä.) mit normaler windows font hinaus. mit einem label bekomm ich text von links nach rechts auch schon "ok" hin, nix tolles aber reicht bislang aus. nun meine frage ob sich jemand schonmal an sowas gewagt hat und mir unter die arme greifen kann? ziel soll eine VCL About-box werden, wo so etwas wie ein "Kasten" (Memo-Box like, mir fällt da grad kein besserer begriff zum verdeutlichen ein) dargestellt wird, wo die schrift von unten nach oben immer kleiner werdend fließend dargestellt wird. Als eine Art Credits-Scroller mit Text als "Input". (kann auch winapi sein, hab für beides ein offenes ohr!) ich hab zwar eine vorstellung wie ich ich so einen memo-box text von unten nach oben bekäme aber ...ich vermute ich bin da eh auf dem holzweg und sprech sie mal lieber nicht aus, memo box ist wahrscheinlich bereits der total falsche anfang. hat jemand lust mit mir an so etwas zu basteln? (oder links oder gar code schnippsel?) ich würde mich um hilfe jeglicher art freuen da ich null ahnung hab wie ich eine font so toll schräg hinkriegen könnte. (:duck: was ich oben nicht sagen wollt kommt nun ans tageslicht, jede zeile eine font stufe kleiner... :duck:) in diesem sinne grüße edit: falls möglich mit normalen delphi code der nicht unbedingt delphi super aktuell version sein muss, ich kann aber bestimmt das eine oder andere für mein altes werkzeug (delphi 7) adaptieren. edit2: falls sowas directx/opengl kenntnisse erfordert, die existieren bei mir noch nicht. :-( --- Update, erster gehversuch im anhang, binär + source |
AW: grafischer Scroll Text (StarWars o.ä.)
Meinst du so eine Aboutbox wie in meinem XP Usermanager:
![]() Btw. "wie in Star Wars" / "von links nach recht" Wie denn jetzt. Der Einführungstext von Star Wars läuft von vorn/unten nach hinten/oben. Dieser Effekt wird erzeugt durch das Kippen des Canvas nach "hinten" bzw. damit dass die Schrift immer kleiner wird, bis sie verschwindet. |
AW: grafischer Scroll Text (StarWars o.ä.)
Moin,
diese ![]() Die Unit ist EsMarque, gab es aber glaub ich auch irgendwo als Memo von denen, naja zumindest kann man schauen wie dies gemacht haben. Ist OpenSource und uralt, sollte auch bei deinem 2007 laufen. Ansonsten sind in dieser Sammlung auch 2-3 dabei mit ähnlichen Funktionen: ![]() |
AW: grafischer Scroll Text (StarWars o.ä.)
Vielen Dank für Hilfe, ich hab den haupt-post verbessert mit angabe worauf ich tatsächlich hinaus will :)
Ich schaue mir nachher alles mal an da ich keinen eurer links bisher kenne. Grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Ich denke mal so einen Effekt kannst du mit einer Paintbox und einem Timer erreichen.
Du musst den Text dann halt selbst auf das Canvas der Paintbox zeichnen. |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal schnell was zusammengeklicktes ...
Ein Timer + Paintbox, das Memo dient nur als Textspeicher. Davon ausgehend kannst du sicher was eigenes machen. |
AW: grafischer Scroll Text (StarWars o.ä.)
Wäre es nicht das einfachste das einfach mit FMX zu machen (notfalls kostenlose Starter-Edition) und das dann in seiner VCL-Anwendung einbetten?
![]() |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
|
AW: grafischer Scroll Text (StarWars o.ä.)
Wenns um Star Wars geht, frag doch mal die
![]() Glaube zwar dass das auch nur horizontal scrollt, kanns aber grad nicht testen. |
AW: grafischer Scroll Text (StarWars o.ä.)
|
AW: grafischer Scroll Text (StarWars o.ä.)
Update: mein erster selbstversuch ist im anhang oben enthalten, ohne externe referenzen gelesen zu haben (pre early lach aus version)
Danke für neue links zu diesem thema, ich schaue da mal rein! Grüße & nicht lachen ;-) |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
ich hab dort zwar kein zugang zu den dateien, aber es wird ja auch im text etwas erklärt. das foto schaut zumindest TOP aus! danke und grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
dem werde ich nachgehen, schaut sehr vielversprechend aus, danke! |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
das werkzeug selbst sieht auch sehr gelungen aus! da muss ich mich mal reinlesen wie's angestellt wurde um es mit dem "kippen & kleiner" werden zu vereinen. schaut echt toll aus! edit: ja, gdi+ (-; Grüße! ps: der scroll text ist ja drollig, siehe anhang:thumb: |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
darf ich damit meine class aufpimpen? grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
klar doch ;)
|
AW: grafischer Scroll Text (StarWars o.ä.)
Vielen Dank und wird gemacht.
Dank Selbstversuch und nachdem ich den Source von Whookie betrachtete, war ich ja Ansatzweise auf dem richtigen Weg *freu* Klar, pixel scrollen und nicht komplette zeile, das ist der ruckelfaktor. Gibt es Nachteile wenn man es wie bei meinem Versuch per TImage anstelle TPaintBox darstellt? Ich kenn mich da nicht so gut aus und würde gerne alle Blickwinkel betrachten. Grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
nach etlichen selbstversuchen mich in die materie einzuarbeiten bin ich bei sowas hier gelandet.
vielleicht mag es ja jemand noch weiter verfeinern. ist total unoptimiert und bestimmt fehlerbehaftet bis zum anschlag ;-) cpu wird böse ausgelastet.
Delphi-Quellcode:
momentan wird bildA zu bildB mit einem trapez effekt umgewandelt.
procedure StarWarsTrapez;
var xc,yc:Integer; orgCoord:TPoint; newTopEdge:Integer; startX,stopX:Real; mLeftSide:Real; screenZ,screenTopY:Integer; textY:Integer; mg1,mg2:Real; p1,r1,r2:TPoint; param:Real; begin textY:=-30; mg1:=textY/(orgImg.Width/2+OrgImg.Height); mg2:=textY/(orgImg.Width/2); screenZ:=Round(newImg.Height/(mg1-mg2)); screenTopY:=Round(mg1*screenZ); newTopEdge:=Round(newImg.Width*orgImg.Width/(orgImg.width/2+orgImg.Height)/2); mLeftSide:=(newTopEdge-newImg.Width)/2/newImg.Height; startX:=(newImg.Width-newTopEdge)/2; stopX:=newImg.Width-startX; p1.x:=orgImg.width div 2; p1.y:=textY; r1.x:=OrgImg.Height; r1.y:=0; r2.x:=screenZ; for yc:=1 to newimg.height do begin startX:=startX+mLeftSide; stopX:=stopX-mLeftSide; r2.y:=screenTopY-yc; param:=(p1.y*r2.x-p1.x*r2.y)/(r1.x*r2.y-r1.y*r2.x); OrgCoord.Y:=OrgImg.Height-Round(OrgImg.Height*param); for xc:=Round(startX) to Round(stopX) do begin orgCoord.x:=Round((xc-startX)/(stopx-startx)*orgImg.width); newImg.canvas.pixels[xc,yc]:=orgImg.canvas.pixels[orgCoord.x,orgCoord.y]; end; end; end; wie ich das mit laufschrift hinbekommen soll weiß ich noch nicht, aber ich geb nicht auf ;) Grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Irgendwie kann ich meine Haupt-Post nicht ändern deswegen hier,
ich hab jetzt sowas wie einen "fliegenden text" basteln können, entwickelt als vcl komponente wo auch noch an allen ecken und enden feintuning ran muss. text kann in alle vier richtungen bewegt werden, in theorie immer zentriert ;-) wer mag schaut mal im anhang rein. grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
bei meinen übungen ist noch ein evtl interessanter effekt rausgekommen,
ich wollt in diesem side-project ürsprünglich text von links nach rechts wandern lassen, und den mit eine art wobble effekt belegen. nunja, das "wobblen" wollte nicht so klappen, aber durch zufall (wobble arbeit auf kompletten bild mit pfad anstelle des textes) kam ein nett anzusehender effekt den ich nun als sinusscroller vorstelle. diesmal ein paar mehr einfluss möglichkeiten (der scroller ist eine class aber noch im hauptsource) ein paar vcl's lassen das window auch etwas hübscher ausschauen, ich bin gespannt ob es gefällt. so, nun aber zurück zu meinem starwars dingens, möge die macht mit euch sein. in diesem sinne grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
zum spielen.. ka ob es bei euch läuft.
gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
bei mir funktioniert es einwandfrei,
das bringt mein thema hier auf den punkt :thumb: auch eine klasse gui/skin, mag ich sehr. ich versuch mich gerade an units wie fastpixel um alles etwas zu entlasten ohne mein eigenes dingens fertig zu haben ;) grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
ich würde mich darüber sehr freuen!
Grüße |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
Und ein paar kleine Sachen aus meiner Library wie GetTextBound, Split, ColorARGB.. und so weiter. Wenn du unter D7 Probleme mit PWideChar hast dann musst du das selber anpassen.. sorry habe nur D2010. source include ;) gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 2)
Vielen Dank, bei mir klappt der Source noch nicht so ganz,
deine Vermutung pWide ist total korrekt :thumb: anbei dein source das er unter delphi7 ide ein kompilat herstellt plus binary. und ein foto der compiler fehler an denen ich ran muss. vielen dank für deine mühe & arbeit! edit: ich habe noch eine delphi 7 gdiplus.pas rumflattern, die aufrufe sollten ja gleich sein nur die deklaration ist anders, ich schau da mal nach |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
Noch vergessen.. beim beenden der Anwendung fehlt GDI_Close. Zitat:
Habe deine source mit WinMerge verglichen und kann keinen unterschied zu meinen feststellen. Abgesehen davon das der Double Buffer der Form nicht aktiviert ist. EDIT: TGPPointF und TGPPoint sind zwei paar Schuhe. F steht für Single das ist der einzige unterschied und ja es muss Single sein gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
bitte nicht abwertend verstehen,
zumal es ja sich ja "nur" um ein About-Box Projekt handelt geb ich dir mehr als recht (dateigröße) ich fummel mir das schon zurecht mit den pWide's, warum der bei diesen "p[0] := MakePoint(0,0);" aufrufen meckert weiß ich auch noch nicht. auf jedenfall ein dickes fettes lob für dieses schöne masterpiece of code! das die schrift auch noch umrandet werden kann ist ein geniales feature, cartoon like, find ich klasse! Grüße ich hab auch schon ein paar ideen das noch weiter zu entwickeln, bei der JVCL ist eine TStarScroller (o.ä.) unit, die ein Sternenfeld sehr prozessorschonend darstellt, enthalten. Beides zusammen könnte cool aussehen falls es nicht zuviel cpu kostet. Aber erstmal so hinbiegen das ich es auch nutzen kann, Wochenendprojekt wird nun gestartet (-: edit: DoubleBuffer gibt es leider so noch nicht, muss ich nachträglich einbauen (ja ja, doofes altes delphi ich weiß) |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
MakePoint erwartet als Rückgabe Single. Schau einfach mal auf welche Funktion von MakePoint p[0] zugreift. Notfalls mal die Reihenfolge der Units ändern. gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
Jedem das seine. Ich mache dir das mit dem Double buffer kein Problem. gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
info, unter radstudio xe 10.2.2 schnurrt alles wie bei deinem original binary ohne probleme
ich hat gerade mal unsere firmen vm gestartet und kompiliert, alles sahne. mein lokales problem werde ich schon hinbekommen, GDI_Close hab ich hinzugefügt danke! Alles wird gut ;-) Grüße (wobei ich gerade eher vom code fasziniert bin wie du mit gdi+ umgehst) |
AW: grafischer Scroll Text (StarWars o.ä.)
Hier eine aktualisierte Version mit neuer Gradient(verschiedene Richtungen zeichnen) und Doublebuffer Funktion.
Habe aber ein kleines Problem nach dem abspielen wird der Gradient nicht mehr gezeichnet.. :oops: Eventuell muss ich hier ein Temporäres Transparentes Bitmap erstellen ansonsten wüsste ich jetzt nicht an was es sonst noch liegen könnte das der Hintergrund schwarz ist. Kannst ja mal vergleichen ;) Pick dir raus was du brauchst. Zitat:
EDIT: Hier ist noch ein Problem..
Delphi-Quellcode:
Im alten code wird UseSize verwendet bevor es zugewiesen wurde, ist dann 0
// Pen color for Border
PenARGB := ColorARGB(255, 0); // Font Color ColrARGB := ColorARGB(255, RGB(255, 255, 0)); UseFont := 'Arial'; UseSize := 20; UseGradient := true; // ScrollOffset must be the same then Font size ScrollOffset := UseSize * Length(Txt); //<< muss hinter UseSize nicht davor gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
ja das mit der fontsize hatte ich bereits berücksichtigt in der hoffnung ich bekomme schrift auch angezeigt ;-)
daran lag es nicht und die zweite version, ich hab noch nicht weiter reingeschaut nur rasch nebenbei kompiliert und probiert, da ist beim gradient ein sehr hoher cpu zuwachs, weswegen ich darauf komplett verzichte. (text anzeige bleibt noch leer, evtl muss ich's auf nonGDI+ bringen damit auch ich spass damit haben kann, ich teste noch viele varianten durch.) Danke auch für die DoubleBuffer implementierung aus der ich lernen kann!! Das hilft! |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
Beim Border zeichnen ja da ist ein Zuwachs weil ich dann die Schrift doppelt zeichnen muss. Zitat:
Zur Info.
Delphi-Quellcode:
DC := DoubleBuffer(PaintBox1.Canvas.Handle, rc.Right, rc.Bottom, CreateBuffer);
CreateBuffer erstellt ein Temporäres Bitmap. DoubleBuffer gibt dann ein DC zurück auf das du zeichnen kannst. Alle Zeichnungsoperationen werden dann auf das Temporäre Bitmap gezeichnet nicht in die PaintBox selbst. Mit
Delphi-Quellcode:
DoubleBuffer(0, 0, 0, DestroyBuffer);
Wird dann das Resultat vom Bitmap(DestDC) in das SourceDC(PaintBox) geblittet und die Ressourcen freigegeben. Denke aber du weist das selbst ;) Zitat:
Ok dann viel Spaß noch beim probieren. gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein minibeispiel was ich mit dem Sternenfeld meinte,
per Bild klappts natürlich auch, sehr geschmeidig gelöst hehe Grüße (zum compilieren JVCL und RxLib erforderlich deswegen auch .exe drinnen) edit: vergessen datei ranzupappen :-/ |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 2)
mein lokales problem hab ich eingrenzen können, es sind die single werte für koordinaten oder wie sie benutzt werden.
der scroller zeichnet alles farblos total klein und weit ausserhalb des sichtbaren bereichs. (bei mir extrem weit links, ich denk mal das da irgendwo dein 0-wert beginnt) herausgefunden dank deiner doublebuffer funktion, da schob ich ein weißes bild zwischen um ein flackern zu bekommen. ich bastel mal rum um mir in bei wiedergabe ein paar werte anzeigen zu lassen damit ich koordinaten kontrolliere. Grüße (solangsam nervts und ich bin geneigt auf 2010 upzugraden, ich guck mal bei ebay rein.) edit: anbei noch ein paar nette samples die ich fand. particlesystem.7z = komponente mit der man easy flammen effekte hinbekommt sam69.7z = opengl scroller, schaut aus wie ein wirbelsturm der sich entfaltet, cooler effekt beides nicht von mir aber mit d7 anwendbar ;-) |
AW: grafischer Scroll Text (StarWars o.ä.)
Zitat:
Zitat:
bei einem Font mit einer höhe von 40 und einem Text mit 10 Zeilen ergibt das eine Top Position von der gesamt höhe des Panels plus 400. es ist kein Minus wert also -400 weil meine schleife beim höchsten Index des übergebenen Textes beginnt. pt.Y (Single = TGPRectF - F steht für single) wäre dann
Delphi-Quellcode:
ScrollOffset + rc.Bottom - ((Length(Txt) - 1) - IntI) * UseSize
pt.X berechnet sich aus der weite des Panels minus der Text Weite der aktuellen Zeile dividiert durch 2 (Zentriert im Panel). gruss |
AW: grafischer Scroll Text (StarWars o.ä.)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab's fast hinbekommen, jetzt nurnoch das pWide korrigieren und es funktioniert wie gewünscht.
Anbei mein Fortschritt in Chinesisch/Japanisch :cheer: edit: und danke nochmal für die erläuterungen, das half mir irgendwie, man siehts ja per bild beweis ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 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