AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grafiken

Ein Thema von MiniMax · begonnen am 27. Dez 2009 · letzter Beitrag vom 31. Dez 2009
Antwort Antwort
Seite 1 von 3  1 23      
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#1

Grafiken

  Alt 27. Dez 2009, 15:45
Hallo Zusammen,
Ich möchte gerne so ne Art Autotacho nachbilden! Wie kann ich das Machen, sodass ich die Position des Zeigers ändern Kann?
In etwa so

Ich hoffe ihr könnt mir Helfen
Gruß
MiniMax
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Grafiken

  Alt 27. Dez 2009, 15:48
Dein Suchwort heißt Canvas

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Grafiken

  Alt 27. Dez 2009, 16:38
Woran hängst du denn im Moment? Liegt es am Zeichnen überhaupt oder am Berechnen des Winkels etc.? Einpaar zusätzliche Informationen wären hilfreich...

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#4

Re: Grafiken

  Alt 27. Dez 2009, 17:17
Hi,
thx für deine Antwort! Es hapert an allem! Ich dachte, man könnte den Tacho Hintergrund einladen, darüber den Zeiger als 2. Image und den dan I-wie drehen? Es kommen über den Serialport Zeichenketten mit Werten rein! Die müssen halt Zelegt werden und dann auf dem "Tacho" ausgegeben werden. Reicht das an Informatinionen? Wenn noch mehr Infos gebraucht werden, einfach schreiben welche --> Ich freue mich auf eine Antwort!
Gruß
MiniMax
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#5

Re: Grafiken

  Alt 27. Dez 2009, 17:31
Hallo,

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

vielleicht hilft's
Angehängte Dateien
Dateityp: rar vu12_125.rar (323,8 KB, 40x aufgerufen)
Markus H.
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#6

Re: Grafiken

  Alt 27. Dez 2009, 17:36
Hi, Danke für deine Schnelle Antwort! Wie bringe ich denn den Zeiger zum Auschlagen? Ich blick da nicht durch!
Gruß
MiniMax
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#7

Re: Grafiken

  Alt 27. Dez 2009, 17:44
... durch verändern der Trackbars - alles andere ist bur einfache Mathematik
und sollte leicht anzupassen sein.
Markus H.
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#8

Re: Grafiken

  Alt 27. Dez 2009, 17:47
Hi, nee das meine Ich net! Ich habe halt nur Lazarus und blicke somit nicht so ganz durch den Code! Kannst du nicht mal einbeispielcode Einstellen womit ich die Zeiger Position festlegen kann? Also Inetwa so: Zeiger:='50' oder so ähnlich halt so dass 50 genau die Mitte ist und 0 ganz lins und 100 Ganz rechts! Vielen Dank im Voraus
Gruß
MiniMax
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#9

Re: Grafiken

  Alt 27. Dez 2009, 18:05
... also :
Beispiel :
Dein Zeigerinstrument soll ein kreis sein mit einem Durchmesser von 120 Pixeln,
dann ist der Mittelpunkt an den Koordinaten : X=60, Y=60,
Dein Canvas hat eine Fläche von 120 mal 120 Pixeln.

Beispiel zum Zeichnen der Position 0 (links)
Delphi-Quellcode:
with Image1.Canvas do
 begin
  Pen.Width := 1; // Breite Deines Striches (=Zeiger)
  Pen.Color := clBlack; // Zeigerfarbe
  MoveTo(60,60) // Zeigerbeginn im Mittelpunkt
  LineTo(10,60) // zeichne einen 50-pixel langen Zeiger nach links
 end;
wenn Du jetzt eine Bitmap als Zeigerinstrument lädst, musst Du vorher den Bereich unter dem zu zeichnenden Zeiger speichern, da die durch den überzeichneten Zeiger veränderten Pixel nach dem Verändern der Zeigerposition wieder zurückgeschrieben werden müssen.

Delphi-Quellcode:
oldPixels : array[0..49] of TColor; // array für 50 Pixel (Zeigerlänge) bereitstellen
                                     // im Abschnitt Private declaration

var
 i : Integer;

for i := 0 to 49 do
 oldPixels[i] := Image1.Canvas.Pixels[i+10, 60]; // Speichern der orginal-Pixel
nach dem Zeichnen des Zeigers (außer beim ersten Zeichnen des Zeigers)
muss das alte Pixelbild unter dem Zeiger wieder hergestellt werden :

Delphi-Quellcode:
var
 i : Integer;

for i := 0 to 49 do
 Image1.Canvas.Pixels[i+10, 60].Pixels := oldPixels[i];
dieses Beispiel gilt nur für die waagerechte Position, für andere Zeigerpositionen
müssen Vektoren gespeichert werden, da der Zeiger ja auch in Vektoren dargestellt
werden soll, die nicht auf 0, 90, 180 oder 270 Grad liegen.

.. ja, und die Skalierung musst Du eben per Winkelfunktionen berechnen.
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Grafiken

  Alt 27. Dez 2009, 18:36
Obwohl schon eine mögliche Lösung gepostet wurde, hab ich gerade mal kurz was zusammengetippt, das funktionieren sollte. Habe für die grafische Ausgabe eine PaintBox verwendet. Die Konstante "cMaxValue" regelt, bei welchem Wert für "Value" der Zeiger voll ausschlägt, sich also ganz rechts befindet. In dem Beispiel wird der Wert von "Value" per Timer geändert, damit man sieht, wie sich der Zeiger bewegt. Zur Berechnung der Koordinaten hab ich ganz einfach die Winkelfunktionen Sinus und Cosinus verwendet. Dabei darfst du nicht vergessen, dass das "Koordinatensystem" für die grafische Ausgabe am PC oben links und nicht unten links beginnt, deshalb die verschiedenen Umrechnungen!

Die Grafik lässt sich natürlich noch anpassen, beispielsweise indem du unter den Zeiger noch ein Bitmap per Draw-Befehl aufs Canvas zeichnen lässt. Das hängt jetzt aber von dir ab.

Vielleicht hilft dir das schonmal weiter. Bei Fragen kannst du sie hier einfach stellen.

mfg
Miniaturansicht angehängter Grafiken
screenshot_565.jpg  
Angehängte Dateien
Dateityp: zip vumeter_187.zip (217,4 KB, 26x aufgerufen)
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:19 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