Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Helfer & Tools Programme für und in XProfan und Fragen dazu.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26731, Antworten: 4206
Gehe zum ersten neuen Beitrag Grand Prix 2012 Eurovision
Aufrufe: 36, Antworten: 4
Gehe zum ersten neuen Beitrag Hilfe bei Script Erstellung
Aufrufe: 15, Antworten: 2
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 121, Antworten: 14
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7572, Antworten: 179
Gehe zum ersten neuen Beitrag Verlust der Internetverbindung
Aufrufe: 43, Antworten: 2
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 34, Antworten: 2
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 25, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 34, Antworten: 3
Gehe zum ersten neuen Beitrag Programmvorstellung:...
Aufrufe: 22, Antworten: 1
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09.03.2009, 13:12   #1 (Direktlink)
Ist öfter hier
 
Registriert seit: 21.02.2009
Beiträge: 71
Standard Bereich einlesen mit Prospeed in Bereichsvarable geht nicht

Unten das Sprite ist schwarz.

Oder geht so etwas nicht mit Prospeed?

mfg

Code:
block&=create("hnewpic",64,64,$000000)
StartPaint block&
  usebrush 1,rgb(0,255,0)
  ellipse 10,10,50,50
EndPaint
dim bereich#,64*64*4
height&=64
width&=64
bitmap_header
~GetDIBits(%hdc,block&,0,height&,bereich#,bmi#,0)
spriteplane&=LoadFileImage(bereich#)

Geändert von profanfan (09.03.2009 um 20:00 Uhr)
profanfan ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.03.2009, 16:45   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Nein, da ist LoadFileImage() falsch. Du musst LoadMemoryImage() verwenden. Aber du kannst nicht einfach nur Grafikdaten einladen. Der Bitmapheader gehört schon dazu. Eben eine Grafikdatei im Speicher, in deinem Fall dann BMP.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (09.03.2009 um 16:48 Uhr)
Frabbing ist offline   Mit Zitat antworten
Alt 09.03.2009, 17:38   #3 (Direktlink)
Ist öfter hier
 
Registriert seit: 21.02.2009
Beiträge: 71
Standard Geht nach Umstellung immer noch nicht...hmmm...

Habe jetzt mit dem Bitmapheader gearbeitet, den ich bei mir überall als standart einsetze.
Es erscheinen nur 2 schwarze Vierecke. Sonst funktioniert alles, wenn ich 1 BMP-Bild einlade.

Zeig mir mal, was ich falsch mache?

Das ist der entscheidende Bereich:
Code:
block&=create("hnewpic",64,64,$000000)
StartPaint block&
  usebrush 1,rgb(0,255,0)
  ellipse 10,10,50,50
EndPaint

width&=64
height&=64
bitmap_header
~GetDIBits(%hdc,block&,0,height&,bereich1#,bmi#,0)
spriteplane&=LoadMemoryImage(bereich1#,laenge&)
Das Programm:
Code:
Declare neu&,x&,y&,z&,ende%,text$,background&,Fensterkopie1&,Fensterkopie2&,array1&,array2&,array3&,array4&,bereich#
Declare sprite1&,sprite2&,sprite3&,sprite4&,spriteplane&
declare dx&,dy&,cx&,bereich1#,laenge&,block&,height&,width&,bmi#

laenge&=64*64*4
Dim bereich#,laenge&
Dim bereich1#,laenge&

$I Prospeed_Funktionen.inc
$H Windows.ph

SetTrueColor 1

neu&=usedll("ProSpeed.dll")

string bereich#,0="bmps/Hintergrund.jpg"
background&=LoadFileImage(bereich#)

Windowtitle "Sprites Demo (1) / ProSpeed."
Window (%maxx/2-400),(%maxy/2-200)-800,600
cls
' *** Die Hintergrundsgrafik auf den Bildschirm kopieren
PaintImage(%HDC,0,0,800,400,background&,0,0,0)

' *** Die Hintergrundsgrafik in die profaninterne Kopie des Bildschirms kopieren
' *** So wird das Fenster wieder erneuert, wenn zeitweise Teile durch andere Fenster verdeckt wurden.
PaintImage(%HDC2,0,0,800,400,background&,0,0,0)

fensterkopie1&=CreateImage(%HDC,800,400)
fensterkopie2&=CreateImage(%HDC,800,400)

' *** Zwei Kopien des Bildschirms für das Sprite-Doublebuffering machen
PaintImage(fensterkopie1&,0,0,800,400,%HDC,0,0,0)
PaintImage(fensterkopie2&,0,0,800,400,%HDC,0,0,0)

block&=create("hnewpic",64,64,$000000)
StartPaint block&
  usebrush 1,rgb(0,255,0)
  ellipse 10,10,50,50
EndPaint

width&=64
height&=64
bitmap_header
~GetDIBits(%hdc,block&,0,height&,bereich1#,bmi#,0)
spriteplane&=LoadMemoryImage(bereich1#,laenge&)

ende%=0

dx&=100
dy&=100
sprite1&=InitSprite(spriteplane&,%HDC,fensterkopie1&,fensterkopie2&,0,0,64,64,1,1,0,dx&,dy&,4,4)
sprite2&=InitSprite(spriteplane&,%HDC,fensterkopie1&,fensterkopie2&,0,0,64,64,1,1,0,dx&+250,dy&,2,2)

WhileNot ende%
 sleep 1
 if isKey(2)
  ende%=1
 EndIf
 if isKey(81)
  dx&=dx&-1
 EndIf
 if isKey(69)
  dx&=dx&+1
 EndIf
 if isKey(87)
  dy&=dy&-1
 EndIf
 if isKey(83)
  dy&=dy&+1
 EndIf
 
 movesprite(sprite1&,dx&,dy&)
 cx&=collision(sprite1&,sprite2&,2,2)
 
 if cx&=1
  StartPaint %hwnd
    DrawText 10,225,"colli"
  endpaint 
  else
  StartPaint %hwnd
    DrawText 10,225,"         "
  endpaint 
 endif
Wend

DeleteAllSprites()

FreeImage(background&)
FreeImage(spriteplane&)
FreeImage(fensterkopie1&)
FreeImage(fensterkopie2&)

freedll neu&

Dispose bereich#
Dispose bereich1#

END

proc bitmap_header
  def &BI_RGB 0
  def &DIB_RGB_COLORS 0
 
  struct BITMAPINFOHEADER = \
    biSize&, biWidth&, biHeight&, biPlanes%, biBitCount%, biCompression&, \
    biSizeImage&, biXPelsPerMeter&, biYPelsPerMeter&, biClrUsed&, biClrImportant&
 
  dim bmi#,BITMAPINFOHEADER 
  clear bmi# 
  with bmi# 
    .biSize&        = sizeof(bmi#)
    .biWidth&       = width&
    .biHeight&      = height&
    .biPlanes%      = 1
    .biBitCount%    = 32
    .biCompression& = &BI_RGB
    .biSizeImage&   = ((.biWidth& * .biBitCount% \ 8 - 1) | 3 + 1) * abs(.biHeight&)
  endwith
endproc

Geändert von profanfan (09.03.2009 um 20:03 Uhr)
profanfan ist offline   Mit Zitat antworten
Alt 09.03.2009, 20:56   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Du versuchst das zu kompliziert. Die ProSpeed kann selber Bildschirme erstellen, das würde ich nutzen.
Auch deine Methode Sprites zu bewegen ist fehlerhaft, daher geht das ganze System in die Knie. MoveSprite() bewegt Sprites selbstständig von A nach B. Wenn du Sprites kontinuierlich manuell setzen willst, mussst du SetSpritePos() benutzen.

Schau dir das mal an:

Code:
Declare neu&,x&,y&,z&,ende%,text$,background&,Fensterkopie1&,Fensterkopie2&,array1&,array2&,array3&,array4&,bereich#
Declare sprite1&,sprite2&,sprite3&,sprite4&,spriteplane&
declare dx&,dy&,cx&,bereich1#,laenge&,block&,height&,width&,bmi#

laenge&=64*64*4
Dim bereich#,laenge&
Dim bereich1#,laenge&

$I Prospeed_Funktionen.inc
$H Windows.ph

SetTrueColor 1

neu&=usedll("ProSpeed.dll")

string bereich#,0="bmps/Hintergrund.jpg"
background&=LoadFileImage(bereich#)

Windowtitle "Sprites Demo (1) / ProSpeed."
Window (%maxx/2-400),(%maxy/2-200)-800,600
cls
' *** Die Hintergrundsgrafik auf den Bildschirm kopieren
PaintImage(%HDC,0,0,800,400,background&,0,0,0)

' *** Die Hintergrundsgrafik in die profaninterne Kopie des Bildschirms kopieren
' *** So wird das Fenster wieder erneuert, wenn zeitweise Teile durch andere Fenster verdeckt wurden.
PaintImage(%HDC2,0,0,800,400,background&,0,0,0)

fensterkopie1&=CreateImage(%HDC,800,400)
fensterkopie2&=CreateImage(%HDC,800,400)

' *** Zwei Kopien des Bildschirms für das Sprite-Doublebuffering machen
PaintImage(fensterkopie1&,0,0,800,400,%HDC,0,0,0)
PaintImage(fensterkopie2&,0,0,800,400,%HDC,0,0,0)

spriteplane&=CreateImage(%hdc,64,64)

MCls 64,64
StartPaint -1
  usebrush 1,rgb(0,255,0)
  UsePen 1,1,RGB(0,0,1)
  ellipse 10,10,50,50
  PaintImage(spriteplane&,0,0,64,64,%hdc,0,0,-1)
EndPaint

ende%=0

dx&=100
dy&=100
sprite1&=InitSprite(spriteplane&,%HDC,fensterkopie1&,fensterkopie2&,0,0,64,64,1,1,0,dx&,dy&,4,4)
sprite2&=InitSprite(spriteplane&,%HDC,fensterkopie1&,fensterkopie2&,0,0,64,64,1,1,0,dx&+250,dy&,2,2)

movesprite(sprite1&,800,dy&)

WhileNot ende%
 sleep 10
 if isKey(2)
  ende%=1
 EndIf
 if isKey(81)
  dx&=dx&-1
 EndIf
 if isKey(69)
  dx&=dx&+1
 EndIf
 if isKey(87)
  dy&=dy&-1
 EndIf
 if isKey(83)
  dy&=dy&+1
 EndIf
 
 cx&=collision(sprite1&,sprite2&,8,8)
 
 if cx&=1
  SetText %hwnd,"Kollidiert!!!"
 else
  SetText %hwnd,""
 endif
Wend

DeleteAllSprites()

FreeImage(background&)
FreeImage(spriteplane&)
FreeImage(fensterkopie1&)
FreeImage(fensterkopie2&)

freedll neu&

Dispose bereich#
Dispose bereich1#

END
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 09.03.2009, 22:18   #5 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Bitte was könnte die Ursache für folgenden Fehler sein:
Zeile 17: Funktion unbekannt: LOADFILEIMAGE(
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.03.2009, 22:37   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Du benutzt irgendwie die falsche Inc oder Dll...
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 10.03.2009, 08:28   #7 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Achso... das war schon alles für Version 3.0 ... Klappt jetzt prima, danke!
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Alt 10.03.2009, 10:51   #8 (Direktlink)
Ist öfter hier
 
Registriert seit: 21.02.2009
Beiträge: 71
Standard

Jup, danke, wahrscheinlich denke ich hier zuviel. Weil ja vom ProSpeed viel abgenommen wird.

mfg

Geändert von profanfan (10.03.2009 um 11:55 Uhr)
profanfan ist offline   Mit Zitat antworten
Alt 10.03.2009, 12:44   #9 (Direktlink)
Ist öfter hier
 
Registriert seit: 21.02.2009
Beiträge: 71
Standard

Wenn sich 2 Kollisionsrechtecke überschneiden, fängt ein unsichtbare Viereck an zu flackern in schwarzer Farbe und zwar, welches auf das andere zufährt.

Gibt es eine Möglichkeit, das komplette Bild(Screen 800x400) erst nach vorn zu bringen, wenn im Hintergrund alles erledigt ist? Kannst du einen Vorschlag machen? "PageFlip".

mfg

Geändert von profanfan (10.03.2009 um 15:51 Uhr)
profanfan ist offline   Mit Zitat antworten
Alt 10.03.2009, 16:53   #10 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Zitat:
Zitat von profanfan Beitrag anzeigen
Wenn sich 2 Kollisionsrechtecke überschneiden, fängt ein unsichtbare Viereck an zu flackern in schwarzer Farbe und zwar, welches auf das andere zufährt.

Gibt es eine Möglichkeit, das komplette Bild(Screen 800x400) erst nach vorn zu bringen, wenn im Hintergrund alles erledigt ist? Kannst du einen Vorschlag machen? "PageFlip".

mfg

Das dürfte eigentlich nicht passieren und deutet eher auf ein Transparenzproblem hin. Passiert das in dem Code, den ich gepostet habe?
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (10.03.2009 um 17:01 Uhr)
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Prospeed 3.0 komplett mit Beispiel profanfan Helfer & Tools 15 09.03.2009 22:22
ProSpeed.dll - Version 3.0 Frabbing Dlls, Includes, Units & Prozeduren 1 07.03.2009 22:16
Textdatei einlesen SusiQ C/C++, Visual C++, Visual C++.NET 2 13.07.2006 01:33
PDF dateien in word einlesen Höge Software - Allgemein 13 19.04.2006 11:15
Textdateien einlesen Gerhard000 Office-Anwendungen 1 06.11.2004 13:34



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:34 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2