Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#35

Re: Delphi mit Java komunizieren

  Alt 9. Aug 2006, 14:58
Zitat von Simon1988:
Gut also nochmal ...
So müsste es erstmal laufen oder ? Ich denke das ist eine gut lösung.
Ich würde sagen, dass es so laufen müsste und finde das auch eine gute Lösung (gut, dein Meinung dürfte hier deutlich wichtiger sein, du wirst dafür bezahlt).
Ja, etwas vorsichtig muss du nur mit dem Satz:
Zitat von Simon1988:
CallVoidMethod('render mir ein BITMAP');
so der spuckt mir jetzt ein Bitmap aus und ich lade diese Bitmap ganz einfach in Delphi. Da gibt es ja auch Komponenten zum laden
Also das was Java Ausspuckt kannst du einfach nicht direkt laden. Java hat halt ein Java-Objekt und deine Komponente erwartet vielmehr ein Delphi-Objekt. Du müsstest einfach schauen, wie du das am besten übergibst. Ein TBitmap Objekt (aus der Unit Graphics) wirst du nicht direkt bekommen, hier sind weitere Dinge mit implementiert (z.B. der TCanvas).
Eine HBitmap könnte eher dass sein, was sich hier eignet. Diese kannst du direkt aus der Höhe, Breite, Farbinformation und den Pixeln erzeugen. Während die ersten Teile hierbei reine Metainfos sind (die sich bei verschiedenen Maps vielleicht nicht mal ändern?) ist letzteres nur ein Array. Also nur falls du den internen Aufbau einer Bitmap nicht kennst, der ist wirklich denkbar einfach. Sagen wir du hast ein Byte pro Pixel an Farbinformation, dann kannst du dir die Bitmap so vorstellen, wie es ihr Name schon vermuten lässt, es ist einfach eine Matrix (Höhe x Breite), in der jede Zelle den Wert des Pixels enthält. Ob man es nun als Matrix betrachtet oder als ein Array ist natürlich äquivalent. Beim Array musst du halt selbst schauen, wo eine Zeile endet (jede Zeile geht natürlich von i*Breite + 0 bis i*Breite + (Breite - 1), mit 0 <= i < Höhe).
Jedenfalls hast du dann alles, was du leicht übergeben kannst. Ein Array von Bytes (du wirst sicherlich mindestens ein Byte pro Pixel an Informationen nehmen?), Höhe und Breite (Integer) und die Anzahl der BitsProPixel (ebenfalls Integer, wahrscheinlich konstant).
Dein Renderer muss also nur die Pixel, die gesetzt werden in einem Array abspeichern und dieses zur Verfügung stellen.
In Delphi solltest du dann keine Probleme haben, mit diesen Daten weiter zu arbeiten. Natürlich kann eine Bitmap (aus der Windows Unit) auch direkt gezeichnet werden (hat ja ein Handle), du kannst aber auch den Umweg über ein TBitmap gehen (achtung, glaube windows kennt auch ein TBitmap).
  Mit Zitat antworten Zitat