DrawLine3D ungenau und verzerrt
Übersicht

![]() |
MegamagBetreff: DrawLine3D ungenau und verzerrt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tag auch.
In meinem Projekt wollte ich ganz gerne eine Art Lebensbehälter machen. Der ist in der unteren rechten Ecke des Bildschirms und soll aufgefüllt werden können. Hier einmal die leere Version: Hier ist die volle Version: Wie ihr euch denken könnt, möchte ich das eine über das andere ausrollen, um Sachen zu machen, die nachher in etwa so aussehen sollten: Da ich die Draw3D verwende, dachte ich, ich nehme den Befehl Drawline3D ![]() ![]() Man kann bei dem Befehl keine gesamt-Skalierung festlegen, sodass ich das Image an sich ersteinmal um die Hälfte vekleinern musste, damit es über das andere passt. Dann kam das nächste Problem. Ich wollte das ganze ja von unten nach ober ausrollen, der Drawline3D ![]() Nun kam letztendlich das Problem, dass ich absolut keine Ahnung vom Draw3D-Koordinatensystem habe, was darin resultierte, dass ich eine viertelstunde solange Werte für x,y,x2,y2 und Dicke rumprobieren musste, bis es passte. Jetzt waren die Beiden übereinander (in Modus 0 = Strecken). Völlig glücklich stelle ich jetzt den Modus 1 (= Ausrollen) ein und was sehe ich: Das Image ist auf einmal total verzerrt nach oben hin und zur Hälfte abgeschnitten, obwohl es mit Modus 0 noch gepasst hat. Änderungen der BIld-Skalierung haben auch nichts bewirkt. An dem Punkt habe ich einfach aufgegeben und hoffe, dass ihr mir vielleicht eine Alternative sagen könnt. Danke für's lesen. Nachtrag: Ich hab' die Codes vergessen, vielleicht helfen sie ja weiter... BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde den Befehl wechseln:
DrawRect3D ![]() Damit sollte das locker gehen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
du rollst die halbtransparenz über ne halbtranzparent und wunderst dich dass die gesamttranzparenz dsich ändert.. du musst das graue von oben einrollen wenn du das rote von unten ausrollst | ||
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht hier doch überhaupt nicht um die Transparenz?
Mir ist schon klar, dass der Rand dann grauer ist, es geht einfach darum, dass DrawLine3D eine komplett falsche Darstellung des Images macht, aber ich glaube DrawRect3D könnte funktionieren, ich muss mal ein wenig rumprobieren ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry Megamag, immer wenn du mit der Draw3D nicht weiter kommst, dann klingt das so, als wäre die Draw3D für dich ein unausweichliches Übel. Und bisher war nicht einmal die Draw3D an etwas fehlerhaft, sondern du hast einige Sachen nicht bedacht. Wie auch in diesem Fall, mekerst aber immer so, als wäre die Draw3D nur scheisse:
- Wenn du ein Bild mit W=256, H=256 grabst und es auf W*0.5, H*0.5 skallierst, hat es eine Breite/Höhe von 128, (dies gilt jedoch nicht für DrawLine3D im Mode=0 und Mode=1, da hier jeweils die Breite im Befehl selbst eingegeben wird und die Länge sich aus den beiden Koordinaten ergibt. Nur im Mode=2 [ausrichten] wird dann die skallierte Dimension zu der Länge addiert, was auch logisch ist). In so einem Fall wäre ein gestreckt gezeichnetes Bild (Mode=0) aus entsprechend mit 128 Länge einzuzeichnen. Du hast aber DrawLine3D CanShoot2,-450,-385,-450,-255,65,0,0 eingezeichnet. Und die Entfernung zwischen -385 und -255 ist 130 und nicht 128. Das ergibt 2 Pixel verzerrung innerhalb der gezeichneten Linie. Somit stimmt es nicht mehr überein. - Um das zu umgehen, kann man auch einfach im Mode=2 (ausrichten) zeichnen. Dann übernimmt die Draw3D die vorgegebenen 128 Pixel und richtet das Bild nur noch aus. Dann ist es egal ob du 130, 128, 2 oder 5000 als Entfernung eingibst, lediglich die Richtung (nach oben) muß stimmen. Der Rest stimmt dann absolut pixelperfekt mit Mode=1 (ausrollen) überein. - Dann wäre für mich interessant zu wissen, wie man es schnell und einfach zu programmieren sein könnte(also nicht bezogen auf mich der die Draw3D erstellt, sondern bezogen auf andere Programmierer die damit arbeiten), dass ein Bild horizontal oder vertikal ausgerollt werden soll. Je nachdem, wie man es gerade braucht? Eine Möglichkeit wäre natürlich eine Parameterübergabe zum Beispiel: 0=nach oben, 1=nach rechts, 2 nach unten und 3 nach links. Halte ich für unnötig. Oder automatisch? Und was machen dann die Leute die eine Linie in beliebigen Winkeln einzeichnen? Dann poppt immer wieder ein neuer Zeichenmodus auf? Bevor man sich hier beschwert bitte einmal überlegen, wie man es besser machen könnte. Ich bin nach wie vor für jeden Tipp dankbar. Also immer her mit den Tipps. In so einem Fall - Bilder immer in der Horizontalen lage nach rechts auslesen um auszurollen - ist eine kontrollierte Situation und kann in den meisten Fällen am besten verwendet werden. Zum Beispiel für Ladebalken. Lösung: Code: [AUSKLAPPEN] DrawLine3D CanShoot2,-450,-383,-450,-255,64,0,0
DrawLine3D CanShoot2,-450,-383,-450,-255+MouseY3D,64,1,0 Und wenn man damit nicht ganz klar kommt, kann man auch einfach beide Linien mit Mode=1 zeichnen, dann sind beide Zeichenstyle identisch (ausrollend). ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entschuldige bitte, wenn das als "meckern" empfunden wurde. Ich wollte mit meinem Post keinesfalls sagen, dass die Draw3D "scheiße" ist, sondern einfach ausdrücken, dass ich mit DrawLine3D nicht klarkomme, bzw. dieser Befehl für mein Anliegen offenbar falsch ist, was sich bereits in der Tatsache zeigt, dass eine "Linie" gezeichnet wird, die natürlich das Bild auch entschprechend dreht, daher habe mir jetzt was mit DrawRect3D gebastelt, was für den Zweck wohl besser geeignet ist, da ich dort die Textur einfach verschieben kann. Ich hatte einfach vorher nicht genau verstanden, wie der Befehl überhaupt funktioniert und habe mich wohl deshalb etwas darüber aufgeregt, was allerdings keine Kritik an deiner Draw3D sein sollte als vielmehr an meiner eigenen Unfähigkeit. Also entschuldige bitte das Misverständnis ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du brauchst dich nicht zu entschuldigen, da ich dir auch ein paar Tipps zur Lösung deines Problems gegeben hab. Ein Zeichen dafür, dass es mir doch hauptsächlich um eine Hilfestellung ging. ![]() Ich war wohl auch etwas überreizt. ![]() Was ich auch hervorbringen wollte ist, dass du dir das hättest selbst lösen können, indem du beide Linien mit den selben Mode=1 (ausrollen) zeichnen sollen. Denn dann wären selbst bei einer fehlerhaften Darstellung (was sie jedoch nicht ist, habe extra mit diesem Befehl viele Programmierstunden zusammen verbracht) keine Unterschiede zwischen beiden Linien erkennbar gewesen. Nur so als Tipp. Vermeide also bei solchen Überlagerungen nach Möglichkeit generell verschiedene Zeichenarten. Macht die Sache sonst unnötig kompliziert. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinen Post bitte gekonnt ignorieren. war schwachsinn ^_^" | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group