Italia
Foro

Komische Effekte

 
- Page 1 -


Hi da bin ich wieder.
2 Fragen hab ich mitgebracht
1.) In meinem Programm habe ich folgende Zeilen:
(Normales Windowsfenster)
KompilierenMarkierenSeparieren
f1&=CreateExtBmp(%HDC,%maxx,%maxy)
f2&=CreateExtBmp(%HDC,%maxx,%maxy)
string bereich#,0="SPRITE.BMP"
spriteplan&=LoadExtImage(bereich#)
sprites&=InitSprite(spriteplan&,%HDC,f1&,f2&,0,0,40,40,spriteindex%,1,10,40,40,1,1)/pre>

bei InitSprite verabschiedet sich das Programm ohne Worte.
Warum? Was ist nun los?
2.) Was sind das per Effekte (Sprite wird doppelt und schwarz angezeigt, obwohl Transparenz weis)
KompilierenMarkierenSeparieren
declare prospeed&,f1&,f2&,bereich#,spriteplan&,sprites&
dim bereich#,100000
 $I C:PROFANAKTUELLE PROJEKTELOSINCProspeed_Funktionen.inc
prospeed&=usedll("C:PROFANAKTUELLE PROJEKTELOSProspeed.dll")
window 10,10- 300,300
windowtitle "Test"
f1&=CreateExtBmp(%HDC,300,300)
f2&=CreateExtBmp(%HDC,300,300)
string bereich#,0="C:SPRITE.BMP"
spriteplan&=LoadExtImage(bereich#)
sprites&=InitSprite(spriteplan&,%HDC,f1&,f2&,0,0,40,40,4,1,10,10,10,1,1)

while 1

    waitinput

wend

dispose bereich#
freedll prospeed&
FreeExtBmp(f1&)
FreeExtBmp(f2&)
FreeExtBmp(spriteplan&)
FreeExtBmp(sprites&
class=s2>)

Danke im Vorraus
Rolf
 
20.04.2004  
 



 
- Page 1 -


Wird wohl sehr praktisch werden dein Programm !

Hab auch schon paar. ähnliche Programme um Animated-Icons zu entwickeln, wird dein Tool so ähnlich oder noch ein paar spezielle Funktionen bieten ? (bestimmt )

Zu dein Problem fällt mir auch nur StretchBlt() ein, aber das macht ja schon CopySizedBmp.

So ganz hab ich das auch nicht verstanden, du setzt in einer Speicherbitmap die 40x40 Pixel und kopierst sie dann per MCopySizedBmp (oder CopySizedBmp()) in dein Arbeitsfenster auf %hdc in der entsprechenden Dimensione, oder ?

Ist die Dimensione des zu entwerfenden Sprites auf 40x40 Pixel festgesetzt ?

Vielleicht wäre auch ein Scrollbereich des geladenen Bildes in Deinem Programm drin, da ich mal ein Bild größer als das Arbeitsfeld hatte und nicht alle Pfade unterbekommen habe.

War das Bild größer als 2000x2000 Pixel ?
Ansonsten kann man jetzt mit dem neuen Bild System die Bilder komplett verwalten:

-Hinzufügen, entfernen...
-Ändern der Position
-Ändern der Ebene

Und das naturalmente so oft und wann man will auch nachdem speichern und wieder öffnen, vielleicht nicht ganz so praktisch wie eine Scrollfunktion aber im Endeffekt das gleiche

Moritz
 
20.04.2004  
 



Ja richtig:
Das grande Arbeitsfenster wird wärend des Zeichnens auf 40x40 verkleinert. Aber bei mir nehme ich bewusst: Setpixel
Hab vorher Copysizedbmp oder die Funktion von Frank (ist ja eigentlich ident.) genutzt.
Dort ist das Problem:
Im grande Arbeitsfenster ist jeder Bildpunkt gleich.
Das im kleinen (ist bei mir OnTheFly) wird wenn ich Copysized nehme verzerrt. Aber irgendwie will ich bald File laden und muss dann aus dem kleinen Bild eine Kopie auf das grande Arbeitsfenster bringen - und das wird auch verzerrt - kennste bestimmt.
Naja - mal schauen.
RocknRolf
 
20.04.2004  
 



Ja richtig:
Das grande Arbeitsfenster wird wärend des Zeichnens auf 40x40 verkleinert. Aber bei mir nehme ich bewusst: Setpixel
Hab vorher Copysizedbmp oder die Funktion von Frank (ist ja eigentlich ident.) genutzt.
Dort ist das Problem:
Im grande Arbeitsfenster ist jeder Bildpunkt gleich.
Das im kleinen (ist bei mir OnTheFly) wird wenn ich Copysized nehme verzerrt. Aber irgendwie will ich bald File laden und muss dann aus dem kleinen Bild eine Kopie auf das grande Arbeitsfenster bringen - und das wird auch verzerrt - kennste bestimmt.
Naja - mal schauen.
RocknRolf
 
20.04.2004  
 



Hallo zurück !!!

Das Wetter war gar nicht so übel, bis auf 2 kleine Regenschauer. Sind fast die ganze Zeit Motorboot gefahren )

Dein Problem hat sich ja erledigt, Rolf, Gott sei Dank...

Saluto,
ein müder Frank.
 
20.04.2004  
 



 
- Page 2 -


Hi Frank
Naja erledigt hat sich das alte Problem.
Jedoch wie beschrieben, will ich nun wenn ich ein Sprite lade dieses von dem kleinen Vorschaubild (siehe Screenshot) ein 200x200 Bild als Arbeitsbereich kopieren.
Leider wird dann wieder nicht richtig dargestellt, sondern verzerrt.
Ich finde leider nix von einer anderen Funktion in der Win32.
Vielleicht hat einer noch ne Idee, wie ich dies machen potuto.
Oder ich müsste das 40x40er in kleinere Bereiche aufteilen und dann versuchen diese in das 200x200er reinzukopieren - hmmm?
Bis dann
Rolf
 
20.04.2004  
 



Hi Rolf,

die Verzerrungen sind unvermeidlich, eventuell kannst du mal die API SetStretchBltMode() ausprobieren.

Im Grunde bleibt dir nichts anderes übrig, als per GetPixel die Farbe des Pixels abzutasten und dann an passender Stelle ein Quadrat in dieser Farbe zu zeichnen, und das per alle Pixel.

Eine andere Möglichkeit, wahrscheinlich auch schneller, wäre, ein Byte-Array zu nutzen, das mit InitExtFX() von dem Sprite erstellt wurde. Dort befinden sich ja alle Pixeldaten als Bytefolgen.

Wenn du willst, verrate ich dir das Format der Struktur, die InitExtFX() erzeugt. Aber lieber via persönlicher Mail...
Nicht, weils ein Geheimniss ist, sondern, weil Anfänger hier schwerwiegende Fehler produzieren könnten.

Saluto, Frank
 
20.04.2004  
 



Ja Danke Frank das wäre lieb, also muss ich genauso nur umgekehrt laden wie ich es beim Malen mache:
Punkt gezeichnet - verkleinert als Pixel naja werd mal kucken ob ich das so mache.
Jetzt mach ich mal Pause und spiele Lara Croft 3 hihihihi.
Rolf
und danke nochmals Frank
 
20.04.2004  
 



Ok - OK hat sich erledigt.
Komischerweise verzerrt das Bild nur beim Verkleinern
Beim Vergrößern von 40x40 auf 200x200 wird es korrekt angezeigt.
Aber nun das absolut komische:
Lasse ich das Programm laufen (ich habe kein Waitinput, wegen Cursorbereichsabfrage - nur auf Maustastenabfrage 0,1,2) und ich gehe circa einen Button (Tooltip), so wird aufeinmal der ganze Bildschirm mit meinem Programm gefüllt - muss irgendwo die Grafik ausm Speicher sein?
Bedeutet: Nicht %hdc sondern %desktop wird bemalt - irgendetwas in diese Richtung bekannt?
Rolf
 
20.04.2004  
 



Ich kann das sogar noch topen !!!

Ich hab es mal irgendwie geschafft das eine Animation per CopyExtBmp() in der Taskleiste dargestellt wurde. Die Animation sollte eigentlich auf einem Dialogfenster abgebildet werden spielte sich aber dann in der Taskleiste ab, das sah vielleicht aus !

Lag daran das Io l' DC nicht per API GetDC() ermittelt habe sondern per...

startpaint handle%
fensterdc&=%hdc
endpaint

da sich bei dir aber alles aud %hdc abspielt kann ich nun auch nicht sagen was dein Fehler ist.

*einvölligüberarbeiteter* Moritz
 
20.04.2004  
 



Ciao,

kann ich auch nicht sagen, wie sowas zustande kommt.
CopyExtBmp() ist im Grunde nichts anderes als BitBlt() und basiert nur auf Windows-API.

Saluto, Frank
 
20.04.2004  
 



Danke Euch beiden -
Moritz arbeite nicht soviel am Rechner (vorallem nicht wenn Du partnerlich gebunden bist )
Werde Euch, wenn ich das Problem behoben habe bescheid geben was es war.
Kann naturalmente sein, daß es mit Startpaint -1 zusammenhängt wegen Savebmp (Dummymäßig).
Danke nochmal
Rolf
 
20.04.2004  
 



Keine Sorge Rolf !

Das völlig überarbeitet bezog sich auf die Arbeit weil ich im Moment dutzende von Überstunden schieben darf weil bei uns eine Sommergrippe umgeht.

Meine bessere Metà ist auch sehr tolerant und sorgt schon dafür das ich nicht zuviel Zeit hinterm Rechnern verbringe (das aber im sehr positiven Sinne )

Dein Problem hört auf jeden Fall nach einem Handle Problem an, wirst den Fehler schon finden...

(ein immernoch überarbeiteter) Moritz
 
20.04.2004  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

8.989 Views

Untitledvor 0 min.
Achim Engelhardt21.10.2014

Themeninformationen

Dieses Thema hat 1 subscriber:

unbekannt (20x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie