Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Grafiken (https://www.delphipraxis.net/145240-grafiken.html)

lbccaleb 27. Dez 2009 18:07

Re: Grafiken
 
Zitat:

Zitat von markus5766h
Hallo,

anbei 'mal ein Demo mit VU-Metern,
der Zeiger wird auf dem Canvas gezeichnet.

vielleicht hilft's

Nett, Danke :thumb:

markus5766h 27. Dez 2009 18:40

Re: Grafiken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

@ lbccaleb :

hab' noch eins, keine lineare Teilung, Positionen als Konstanten gespeichert,
0..100

MiniMax 28. Dez 2009 11:29

Re: Grafiken
 
Danke an euch alle! :thumb:
Ich werde mir mal die Beispiele anschauen und wenn ich Fragen habe, werde ich sie hier Posten!

Ich wollte einfach nur den Zeiger Zeichnen und den Rest per Image Einladen! Kann ich dann den/die gleichen Code/s nehmen?

lbccaleb 28. Dez 2009 11:45

Re: Grafiken
 
Naja du musst das ganze event. schon deinen Bedürfnissen anpassen, aber hier wurden ja gute Bsp. gepostet mit welchen die Umsetzung für dich kein Problem sein sollte.

patti 28. Dez 2009 11:45

Re: Grafiken
 
Zitat:

Zitat von MiniMax
Ich wollte einfach nur den Zeiger Zeichnen und den Rest per Image Einladen! Kann ich dann den/die gleichen Code/s nehmen?

Das ist generell schon möglich. Ich kenne jetzt den Quelltext und die Arbeitsweise von markus5766h nicht, aber so wie ich es gemacht habe (siehe oben) musst du dir den Hintergrund erstmal nur in ein Bitmap laden, welches am besten genauso groß ist, wie deine Zeichenfläche. Laden kannst du ein Bild per

Delphi-Quellcode:
Bitmap.LoadFromFile({...});
aus einer Datei auf der Festplatte. Des Weiteren könntest du die Grafik aus einer Ressource laden oder per TImage-Komponente fest in dein Programm mit einbinden.
In der Zeichenroutine kannst du dieses Hintergrund-Bitmap dann per

Delphi-Quellcode:
Canvas.Draw({..});
auf die Zeichenfläche malen. Anschließend musst du dann natürlich noch den Zeiger malen. Lösungen dafür hast du ja bereits bekommen.

mfg

Edit: Der Rote Kasten macht Weihnachtsurlaub? ;-)

MiniMax 28. Dez 2009 13:02

Re: Grafiken
 
Hi,
ich danke euch rechtherzlich! Ich werde es jetzt mal ausprobieren und bei Fragen - Post hier im Forum!

Falls ich nicht noch was bis Silvester schreibe, wünsche ich euch einen

Guten Rutsch ins Neue Jahr, und vorallem Gesundheit und Erfolg!

markus5766h 28. Dez 2009 17:40

Re: Grafiken
 
Zitat:

Zitat von patti
... und die Arbeitsweise von markus5766h nicht

hab's nicht anders gemacht :
Hintergrund ist eine Bitmap (in einem TImage),
der Zeiger wird entsprechend der Umrechnung / Skalierung
auf dem Canvas gezeichnet.

patti 29. Dez 2009 16:06

Re: Grafiken
 
Ok, war mir bloß nicht ganz sicher, weil ich deinen Beitrag mehr oder weniger nur überflogen hatte und mich das oldPixels-Array etwas verwundert hat ;-)

MiniMax 30. Dez 2009 12:14

Re: Grafiken
 
Hallo,
@Patti: Wie meinst du das mit Bitmap.LoadFromFile? Und wie soll ich das Bild dann aufs Canvas Malen?
Kannst du nen Beispiel Schreiben? (Bitmap: test.bmp/ Canvasfläche TPaintbox oder Timage)??? Ich blick da net durch :wall: :wall:
Vielen Dank im Voraus

patti 30. Dez 2009 12:48

Re: Grafiken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist kein Problem. Eigentlich hatte ich dir oben schon einpaar Stichworte genannt, die dir dank Hilfe und Suche schonmal weiterhelfen hätten sollen, aber gut: Hier ist mal eine etwas ausführlichere "Anleitung";

Zunächst deklarierts du im private-Bereich deines Formulars eine Instanz des Typs TBitmap:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    HintergrundBild : TBitmap;
    //..
Anschließend musst du das Bitmap noch im OnCreate-Ereignis deines Formulars erzeugen und das entsprechende Bild von der Festplatte laden:

Delphi-Quellcode:
var P : TFileName;
begin
     //--
     Self.DoubleBuffered := true; // damit es nicht so flackert
     //
     HintergrundBild := TBitmap.Create;
     //
     p := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'hintergrund.bmp';
     //
     if FileExists(p) then HintergrundBild.LoadFromFile(p)
     else MessageDLG('Bild-Datei "hintergrund.bmp" im Programm-Ordner nicht gefunden!',mtError,[mbOK],0);
Außerdem solltest du das TBitmap im OnDestroy deines Formulars wieder freigeben:

Delphi-Quellcode:
HintergrundBild.Free;
Jetzt musst du das Bild in der Zeichenroutine nur noch auf die Canvas zeichnen, etwa so:

Delphi-Quellcode:
PaintBox1.Canvas.Draw(0,0,HintergrundBild);
Und dann natürlich noch den Zeiger, aber das hatten wir ja oben schon.
Das Bitmap sollte genauso groß sein wie die PaintBox, alles andere macht kaum Sinn ;-)

Wenn du das Programm weitergeben willst, musst du auch immer die Datei, welche das Hintergrundbild beinhaltet, mitliefern und sie muss sich im Ordner der EXE-Datei befinden. Dies könntest du umgehen, indem du das Bild in eine unsichtbare TImage-Komponente lädst oder aus einer Ressource holst. Wenn du Fragen hast, dann kannst du in der DP mal nach diesen Stichwörtern suchen oder hier einfach noch mal nachfragen.

Hab das Programm inklusive Bild-Datei und Quelltext mal in den Anhang.

Viel Spaß ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Seite 2 von 3     12 3      

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