WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   XML Text to bmp? (http://www.wcm.at/forum/showthread.php?t=199271)

Isra 13.09.2006 23:39

XML Text to bmp?
 
Hallo Zusammen!
Nochmals ne xml Frage:

Ich habe einen Textausgabe die so ausschaut:
PHP-Code:

      <element>
        <
Position X="38" Y="35"/>
        <
text X="73" Y="26" Length="7" Fixed="Yes" Font="Quartz" Adjust="Left" VerticalAdjust="Center" Color="#FF9933" Bright="1"
          <
string> %((A:PLANE LATITUDEdegree latitude))%!08.5f!</string>
        </
text>
      </
element

Jetzt möchte ich aber anstatt der generierten Zahlen, BMP's verwenden, also für jede Zahl von 0 bis 9 ein Bitmap.

Frage nun, wie kriege ich das hin? Grund dafür ist dass ich photoreale Texturen verwenden möchte, die ich mit der Textausgabe nicht hinkriege.

Vielen Dank für Eure Hilfe :-)

harry3 14.09.2006 01:11

Du musst die Zahl zuerst einmal in die einzelnen Stellen trennen.
Nehmen wir als Bsp. die Zahl 123. Die Hunderterstelle ist 1, die Zehnerstelle 2 und die Einerstelle 3.
Die einzelnen Stellen bekommst du mittels einer Modulodivision(=>ermittelt Rest einer Division, Rechenzeichen ist das Prozentzeichen %).
Einerstelle: Zahl%10, Bsp.: 123%10=3
Zehnerstelle: (Zahl%100-Zahl%10)/10, Bsp.: (123%100-123%10)/10=(23-3)/10=2
Hunderterstelle: (Zahl%1000-Zahl%100)/100., Bsp. (123%1000-123%100)/100=1

Du kannst also für jede Stelle eine Variable machen, die die entsprechende Ziffer speichert(Bsp. (L:h_stelle,numbers); (L:z_stelle,numbers), usw...)

Mittels Select-Value-Case fragst du dann für jede Stelle ab, welchen Wert(0...9) sie hat, und du lädst in den Cases dann die entsprechenden Bitmaps.

Bei einer 8.5f Zahl wird dass eine ziemliche Tipparbeit...aber das Grundprinzip ist, wie du siehst, recht einfach.

Übrigens sieht das Radar sehr gut aus! Woher bekommst du denn die Navigationspunkte? Sind die aus dem MS GPS geladen oder ist es eine Bitmap welche du verschiebst???


Grüße,
Harri

Isra 14.09.2006 19:03

Hallo Harri!
Danke für Deine ausführliche Antwort :-) , bin aber doch ziemlich überfordert damit:confused:. Könntest Du evtl. mal ein Beispiel machen, damit ich einen Anhaltspunkt habe um den Rest zu schreiben?:confused:
Was das ganze am Schluss wird, hatte ich Dir mal vor ein paar Wochen gemailt, inkl. xml Code was ich bis anhin schon habe.

Ja die Nav Punkte werden aus dem MS-GPS gelesen, hatte noch nicht die Zeit dies auf ein verschiebbares BMP zu machen. Das Radar kann übrigens noch viel mehr, z.B Online od. AI Traffic anzeigen etc.

harry3 14.09.2006 21:29

Als Beispiel lass ich die Einerstelle der Variable (L:zahl, numbers) anzeigen:

PHP-Code:

//Einerstelle berechnen und in Variable (&gt;L:einerstelle,numbers) speichern
<Element>
 <
Select>
  <
Value>
  (
L:Zahl,numbers10 % (&gt;L:einerstellenumbers)
  </
Value>
 </
Select>
</
Element>

//Die Einerstelle einer ensprechenden Bitmap zuordnen und anzeigen lassen:

<Element>
 <
Select>

//als Wert wird die Einerstelle genommen:
  
<Value>
  (
L:einerstellenumers)
  </
Value>

//und nun gibts für jede Möglichkeit(0...9) einen Case:
  
<Case Value="0">
   <
Image Name="0.bmp"/>
  </Case>

  <Case 
Value="1">
   <
Image Name="1.bmp"/>
  </Case>

//usw...bis zur Ziffer 9.

 
</Select>
<
Element

Ich hoffe ich hab keine Fehler drinnen weil ich es jetzt direkt ins Forum geschrieben habe und nicht erst im FS ausprobiert habe.


Grüße,
Harri

Isra 15.09.2006 19:15

Hallo Harri!
Bombensache, hat soweit tiptop geklappt!:-) Momentan schaut die Sache so aus:

PHP-Code:



<Element
 <
Select
  <
Value
  (
L:Zahl,numbers10 % (>L:einerstellenumbers
  </
Value
 </
Select
</
Element



<
Element
<
Position X="100" Y="0"/>
 <
Select
  <
Value
  (
L:einerstellenumers
  </
Value

 
  <Case 
Value="0"
   <
Image Name="null.bmp"/> 
  </Case> 

  <Case 
Value="1"
   <
Image Name="eins.bmp"/> 
  </Case> 

  <Case 
Value="2"
   <
Image Name="zwei.bmp"/> 
  </Case>

  <Case 
Value="3"
   <
Image Name="drei.bmp"/> 
  </Case>

  <Case 
Value="4"
   <
Image Name="vier.bmp"/> 
  </Case>

  <Case 
Value="5"
   <
Image Name="fuenf.bmp"/> 
  </Case>

  <Case 
Value="6"
   <
Image Name="sechs.bmp"/> 
  </Case>

  <Case 
Value="7"
   <
Image Name="sieben.bmp"/> 
  </Case>

  <Case 
Value="8"
   <
Image Name="acht.bmp"/> 
  </Case>

  <Case 
Value="9"
   <
Image Name="neun.bmp"/> 
  </Case>

 </
Select
</
Element>

<
Element
 <
Select
  <
Value
  (
L:Zahl,numbers100 % (>L:zehnerstellenumbers
  </
Value
 </
Select
</
Element



<
Element
<
Position X="80" Y="0"/>
 <
Select
  <
Value
  (
L:zehnerstellenumers
  </
Value>

  <Case 
Value="0"
   <
Image Name="null.bmp"/> 
  </Case> 

  <Case 
Value="1"
   <
Image Name="eins.bmp"/> 
  </Case> 

  <Case 
Value="2"
   <
Image Name="zwei.bmp"/> 
  </Case>

  <Case 
Value="3"
   <
Image Name="drei.bmp"/> 
  </Case>

  <Case 
Value="4"
   <
Image Name="vier.bmp"/> 
  </Case>

  <Case 
Value="5"
   <
Image Name="fuenf.bmp"/> 
  </Case>

  <Case 
Value="6"
   <
Image Name="sechs.bmp"/> 
  </Case>

  <Case 
Value="7"
   <
Image Name="sieben.bmp"/> 
  </Case>

  <Case 
Value="8"
   <
Image Name="acht.bmp"/> 
  </Case>

  <Case 
Value="9"
   <
Image Name="neun.bmp"/> 
  </Case>

 </
Select
</
Element>


<
Element
 <
Select
  <
Value
  (
L:Zahl,numbers1000 % (>L:hunderterstellenumbers
  </
Value
 </
Select
</
Element



<
Element
<
Position X="60" Y="0"/>
 <
Select
  <
Value
  (
L:hunderterstellenumers
  </
Value>

  <Case 
Value="0"
   <
Image Name="null.bmp"/> 
  </Case> 

  <Case 
Value="1"
   <
Image Name="eins.bmp"/> 
  </Case> 

  <Case 
Value="2"
   <
Image Name="zwei.bmp"/> 
  </Case>

  <Case 
Value="3"
   <
Image Name="drei.bmp"/> 
  </Case>

  <Case 
Value="4"
   <
Image Name="vier.bmp"/> 
  </Case>

  <Case 
Value="5"
   <
Image Name="fuenf.bmp"/> 
  </Case>

  <Case 
Value="6"
   <
Image Name="sechs.bmp"/> 
  </Case>

  <Case 
Value="7"
   <
Image Name="sieben.bmp"/> 
  </Case>

  <Case 
Value="8"
   <
Image Name="acht.bmp"/> 
  </Case>

  <Case 
Value="9"
   <
Image Name="neun.bmp"/> 
  </Case>

 </
Select
</
Element>


<
Element
 <
Select
  <
Value
  (
L:Zahl,numbers10000 % (>L:tausenderstellenumbers
  </
Value
 </
Select
</
Element



<
Element
<
Position X="40" Y="0"/>
 <
Select
  <
Value
  (
L:tausenderstellenumers
  </
Value>

  <Case 
Value="0"
   <
Image Name="null.bmp"/> 
  </Case> 

  <Case 
Value="1"
   <
Image Name="eins.bmp"/> 
  </Case> 

  <Case 
Value="2"
   <
Image Name="zwei.bmp"/> 
  </Case>

  <Case 
Value="3"
   <
Image Name="drei.bmp"/> 
  </Case>

  <Case 
Value="4"
   <
Image Name="vier.bmp"/> 
  </Case>

  <Case 
Value="5"
   <
Image Name="fuenf.bmp"/> 
  </Case>

  <Case 
Value="6"
   <
Image Name="sechs.bmp"/> 
  </Case>

  <Case 
Value="7"
   <
Image Name="sieben.bmp"/> 
  </Case>

  <Case 
Value="8"
   <
Image Name="acht.bmp"/> 
  </Case>

  <Case 
Value="9"
   <
Image Name="neun.bmp"/> 
  </Case>

 </
Select
</
Element>

<
Element
 <
Select
  <
Value
  (
L:Zahl,numbers100000 % (>L:zehntausenderstellenumbers
  </
Value
 </
Select
</
Element



<
Element
<
Position X="20" Y="0"/>
 <
Select
  <
Value
  (
L:zehntausenderstellenumers
  </
Value>

  <Case 
Value="0"
   <
Image Name="null.bmp"/> 
  </Case> 

  <Case 
Value="1"
   <
Image Name="eins.bmp"/> 
  </Case> 

  <Case 
Value="2"
   <
Image Name="zwei.bmp"/> 
  </Case>

  <Case 
Value="3"
   <
Image Name="drei.bmp"/> 
  </Case>

  <Case 
Value="4"
   <
Image Name="vier.bmp"/> 
  </Case>

  <Case 
Value="5"
   <
Image Name="fuenf.bmp"/> 
  </Case>

  <Case 
Value="6"
   <
Image Name="sechs.bmp"/> 
  </Case>

  <Case 
Value="7"
   <
Image Name="sieben.bmp"/> 
  </Case>

  <Case 
Value="8"
   <
Image Name="acht.bmp"/> 
  </Case>

  <Case 
Value="9"
   <
Image Name="neun.bmp"/> 
  </Case>

 </
Select
</
Element

Ok, nun habe ich ja die nötigen 5 Stellen für die Latitude Anzeige.
Wie relate ich nun das Ganze zu (A:PLANE LATITUDE, degree latitude)?

Vielen Dank soweit mal für Deine Hilfe :-)

harry3 15.09.2006 19:33

Wie sieht den das Ausgabeformat von der Variablen aus?
Also steht da 32° 13' 32'' oder wird es als Dezimalzahl angegeben, z.B. 54,5465° oder ganz anders?

Grüße,
Harri

Isra 15.09.2006 19:57

Hmm....also im Original schaut's so aus:

http://www.opus2.ch/Tiger%20INS.jpg

harry3 15.09.2006 20:09

Ja aber es kommt ja drauf an was die Variable ausgibt. Schau dir das mal an.
Laut Bild sollte es in dem Format sein: die ersten beiden Ziffern sind Grad, der Rest dahinter die dazugehörigen Dezimalstellen.

mfg
harri

Isra 15.09.2006 20:21

Ja das stimmt, die ersten 2 sind Grad, danach 3 Dezimalstellen

harry3 15.09.2006 20:40

Zitat:

Original geschrieben von Isra
Ja das stimmt, die ersten 2 sind Grad, danach 3 Dezimalstellen
Also auch bei der FS Varibale?

Wenn ja dann brauchst du die Zahl nur mit 1000 multiplizieren, damit du die Kommastellen wegbekommst. Der Rest ist dann ganz gleich wie oben beschrieben, du bekommst dann insgeamt 5 Ziffern.

Grüße,
Harri

Isra 15.09.2006 21:04

Sorry für meine Begriffsstutzigkeit, Weekend und müder Kopf.:rolleyes:

Also ich stehe in Sion (LSGS) wo sich folgendes Bild zeigt:

http://www.opus2.ch/LAT.jpg

Die Nullen sind meine Anzeige, unscharf weil vergrössert. Oben die Textausgabe, wie es ja sein soll, möglichst ohne Komma. IM FS (Y Taste) zeigt es mir ja die Grad, Min und SEC an, N46* 13.10'
, ich möchte ja aber die Textausgabe.
:confused:

harry3 16.09.2006 00:38

Die Variable (A:PLANE LATITUDE, degree latitude) ist vom Typ float. Der Modulo Operator funktioniert aber nur mit integer Typen. Du musst den Wert also zuerst von float nach integer umwandeln("casten").

Übrigens habe ich jetzt eine einfachere Art gefunden, die Stellen zu berechnen.
Folgendermaßen funktioniert's:

PHP-Code:

//Die Stellen vor dem Komma
(A:PLANE LATITUDEdegree latitudeint 10 % (&gt;L:einerstelle,numbers)
(
A:PLANE LATITUDEdegree latitude10 int 10 % (&gt;L:zehnerstelle,numbers)
(
A:PLANE LATITUDEdegree latitude100 int 10 % (&gt;L:hunderterstelle,numbers)

//die Stellen nach dem Komma(dez1=Zehntel, dez2=Hundertstel)
(A:PLANE LATITUDEdegree latitude10 int  10 % (&gt;L:dez1,numbers)
(
A:PLANE LATITUDEdegree latitude100 int  10 % (&gt;L:dez2,numbers


Grüße,
Harri

Isra 16.09.2006 00:55

hmm...interessant, bei mir tut sich dabei momentan noch gar nichts, steht noch alles auf 00000 :(

harry3 16.09.2006 15:00

Zitat:

Original geschrieben von Isra
hmm...interessant, bei mir tut sich dabei momentan noch gar nichts, steht noch alles auf 00000 :(
Bei mir hat der obige Code funktioniert. Da muss du also irgendeinen anderen Fehler drinnen haben.

mfg
harri

Isra 16.09.2006 15:29

Hallo Harri!

War wirklich eine tolle Idee! :-) jetzt funktionierts auch bei mir folgendermassen (Zahlen von rechts nach links)

PHP-Code:

(A:PLANE LATITUDEdegree latitude1000 int  10 % (>L:dez3,numbers)
(
A:PLANE LATITUDEdegree latitude100 int  10 % (>L:dez2,numbers)
(
A:PLANE LATITUDEdegree latitude10 int  10 % (>L:dez1,numbers)
(
A:PLANE LATITUDEdegree latitudeint 10 % (>L:einerstelle,numbers)
(
A:PLANE LATITUDEdegree latitude10 int 10 % (>L:zehnerstelle,numbers

Achja und ein paar von den " > " hatte ich auch noch zuviel, darum stand immer alles auf Null :rolleyes:
Vielen Dank für die wertvollen Inputs!!! Das Weekend ist gerettet hehe!:bier:
Ich poste dann später noch ein Bild vom ganzen ;)

Isra 16.09.2006 17:19

Hier die versprochenen Bilder
http://www.opus2.ch/Tiger%20INS%201.jpg... http://www.opus2.ch/Tiger%20INS%202.jpg ... http://www.opus2.ch/Tiger%20INS%203.jpg

Bild 1 INS auf NAV , Bild 2 INS auf Destination geschaltet zur Eingabe eines Waypoints (was doch gleich ein paar Fragen bei mir aufwirft :rolleyes: Harri ..:rolleyes:..xml Grobvorlage wäre vorhanden ) Bild 3 Testmodus aller Anzeigen.
Oben die Dest Data zeigt die momentane (vordefinierte) erreichte Position/Waypoint an, Dest Steer zeigt die gewählte Standlinie zu einem beliebigen Waypoint vom momentanen Standpunkt aus an, welche man in einem Sektor von 10 Meilen links oder rechts von der gezogenen Line anfliegen kann/darf (sollte es dann im HSI anzeigen).

harry3 17.09.2006 12:44

Sieht gut aus:-)

Welches Modell verwendest du denn für deine F5?


mfg
harri

Isra 17.09.2006 22:19

Hallo
Ich verwende dieses Model im Moment: Klick
und diese Repaints Klick haben auch ein Österreicher Repaint dabei :-)

Isra 20.09.2006 18:52

Hallo Harry!
Nochmals ne Frage, ich habe ja jetzt Grad und Dezimalstellen, wie wäre es mit Grad,Min,Sec mit jeweils 2 Stellen? Wie rechne ich das um?

harry3 22.09.2006 18:24

Hallo!

Google hat unter anderem das ausgespuckt:
http://www.naviboard.de/index.php?showtopic=13526

Grüße,
Harri


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag