Deutsch
Forum

Komische Effekte

 
- Seite 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)

bei InitSprite verabschiedet sich das Programm ohne Worte.
Warum? Was ist nun los?
2.) Was sind das für 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&)

Danke im Vorraus
Rolf
 
20.04.2004  
 



 
- Seite 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 Größe, oder ?

Ist die Größe 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 natürlich 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 große 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 großen Arbeitsfenster ist jeder Bildpunkt gleich.
Das im kleinen (ist bei mir OnTheFly) wird wenn ich Copysized nehme verzerrt. Aber irgendwie will ich bald Datei laden und muss dann aus dem kleinen Bild eine Kopie auf das große Arbeitsfenster bringen - und das wird auch verzerrt - kennste bestimmt.
Naja - mal schauen.
RocknRolf
 
20.04.2004  
 



Ja richtig:
Das große 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 großen Arbeitsfenster ist jeder Bildpunkt gleich.
Das im kleinen (ist bei mir OnTheFly) wird wenn ich Copysized nehme verzerrt. Aber irgendwie will ich bald Datei laden und muss dann aus dem kleinen Bild eine Kopie auf das große 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...

Gruß,
ein müder Frank.
 
20.04.2004  
 



 
- Seite 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 könnte.
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 für 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.

Gruß, 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 über 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 ich den 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  
 



Hallo,

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

Gruß, 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 natürlich 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 Hälfte 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  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.944 Betrachtungen

Unbenanntvor 0 min.
Achim Engelhardt21.10.2014

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (20x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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